In der Branche des maschinellen Lernens sind die Zeiten wirklich "AutoML", aber es scheint, dass Keras auch ein Framework hat, das AutoML unterstützt.
AutoKeras ist ein AutoML-kompatibles Keras-Modul, das am DATA Lab der Texas A & M University entwickelt wurde. Ziel ist es, allen den Zugang zu maschinellem Lernen zu ermöglichen.
Die Bedingungen für die Ausführung von AutoKeras sind wie folgt.
Früher hieß es PyTorch, jetzt basiert es auf TensorFlow.
Die Installation von AutoKeras ist einfach und Sie können dies mit nur einem Pip tun.
Wenn Sie versuchen, den bekannten MNIST zu implementieren, sieht der Code folgendermaßen aus:
from tensorflow.keras.datasets import mnist
import autokeras as ak
# Prepare the dataset.
(x_train, y_train), (x_test, y_test) = mnist.load_data()
print(x_train.shape) # (60000, 28, 28)
print(y_train.shape) # (60000,)
print(y_train[:3]) # array([7, 2, 1], dtype=uint8)
# Initialize the ImageClassifier.
clf = ak.ImageClassifier(max_trials=3)
# Search for the best model.
clf.fit(x_train, y_train, epochs=10)
# Evaluate on the testing data.
print('Accuracy: {accuracy}'.format(accuracy=clf.evaluate(x_test, y_test)))
Die Modellerstellung endet mit einer Funktion namens "ImageClassifier ()". Es ist kaum zu glauben, dass dies allein die Ebenenanpassungen und sogar die Parameter gut aussehen lässt.
Die folgenden 6 Arten von integrierten Diskriminatoren sind verfügbar.
--ImageClassifier --ImageRegressor --TextClassifier --TextRegressor --StructuredDataClassifier --StructuredDataRegressor
Es ist wie [Bild, Text, strukturierte Daten] x [Klassifizierung, Regression]. Ein Universal-Identifikationsgerät (AutoModel) ist ebenfalls erhältlich.
"Max_trials" wird als Argument angegeben, und dies ist die Anzahl der Modellversuche. Je mehr Sie haben, desto mehr Muster können Sie ausprobieren, aber natürlich dauert es viel Zeit.
Als Hauptfunktion bekannt
Ist vorbereitet. Zum Zeitpunkt von "fit ()" wird das Modell ausprobiert und das Training mit der angegebenen Anzahl von Epochen (mit EarlyStopping) wiederholt.
Wenn der Modellversuch abgeschlossen ist, wird das Ergebnis wie folgt angezeigt.
Trial complete
Trial summary
|-Trial ID: 7721ba2b2344499c8cc23920528e1976
|-Score: 0.04051450350758387
|-Best step: 0
Hyperparameters:
|-classification_head_1/dropout_rate: 0.5
|-classification_head_1/spatial_reduction_1/reduction_type: flatten
|-dense_block_1/dropout_rate: 0
|-dense_block_1/num_layers: 1
|-dense_block_1/units_0: 128
|-dense_block_1/use_batchnorm: False
|-image_block_1/augment: False
|-image_block_1/block_type: vanilla
|-image_block_1/conv_block_1/dropout_rate: 0.25
|-image_block_1/conv_block_1/filters_0_0: 32
|-image_block_1/conv_block_1/filters_0_1: 64
|-image_block_1/conv_block_1/kernel_size: 3
|-image_block_1/conv_block_1/max_pooling: True
|-image_block_1/conv_block_1/num_blocks: 1
|-image_block_1/conv_block_1/num_layers: 2
|-image_block_1/conv_block_1/separable: False
|-image_block_1/normalize: True
|-optimizer: adam
Außerdem kann das gefundene optimale Modell ausgegeben werden
Es gibt auch eine Funktion namens. Da der Rückgabetyp tf.keras.Model ist, können Sie ihn auf verschiedene Arten verwenden.
Wenn Sie die obige Ausgabe mit export_model () erhalten und mit summary () anzeigen, ist dies wie folgt.
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) [(None, 28, 28, 1)] 0
_________________________________________________________________
normalization (Normalization (None, 28, 28, 1) 3
_________________________________________________________________
conv2d (Conv2D) (None, 26, 26, 32) 320
_________________________________________________________________
conv2d_1 (Conv2D) (None, 24, 24, 64) 18496
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 12, 12, 64) 0
_________________________________________________________________
dropout (Dropout) (None, 12, 12, 64) 0
_________________________________________________________________
flatten (Flatten) (None, 9216) 0
_________________________________________________________________
dropout_1 (Dropout) (None, 9216) 0
_________________________________________________________________
dense (Dense) (None, 10) 92170
_________________________________________________________________
classification_head_1 (Softm (None, 10) 0
=================================================================
Total params: 110,989
Trainable params: 110,986
Non-trainable params: 3
Als ich versuchte, die Genauigkeit mit nur 3 Versuchen auszugeben,
ist geworden.
Als ich es mit einem sehr allgemeinen Keras-Modell versuchte (ich verwies auf hier)
Da dies der Fall war, wurde entschieden, dass fast die gleiche Genauigkeit automatisch erzielt werden konnte.
Ich habe versucht, es mit anderen Daten (strukturierten Daten usw.) zu versuchen, aber manchmal funktionierte es nicht, weil der GPU-Speicher nicht ausreichte. .. ..
Die Bedingungen mögen begrenzt sein, aber es ist großartig, maschinelles Lernen einfach ausprobieren zu können. Es ist jedoch sehr langsam, sodass Sie leistungsstarke Hardware benötigen.
Es funktionierte unter CUDA 10.1, aber nicht unter 10.2.
Recommended Posts