[PYTHON] Ich habe AutoKeras ausprobiert

In der Branche des maschinellen Lernens sind die Zeiten wirklich "AutoML", aber es scheint, dass Keras auch ein Framework hat, das AutoML unterstützt.

Was ist Auto Keras?

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. image.png

Bedingungen

Die Bedingungen für die Ausführung von AutoKeras sind wie folgt.

Früher hieß es PyTorch, jetzt basiert es auf TensorFlow.

Installation

Die Installation von AutoKeras ist einfach und Sie können dies mit nur einem Pip tun. image.png

Stichprobe

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.

Identifikationsmaschine

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.

Funktionen & Parameter

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

Auswertung

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. .. ..

Zusammenfassung

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.

Bonus

Es funktionierte unter CUDA 10.1, aber nicht unter 10.2.

Recommended Posts

Ich habe AutoKeras ausprobiert
Ich habe versucht zu kratzen
Ich habe PyQ ausprobiert
Ich habe es mit Papiermühle versucht
Ich habe versucht, Django-Slack
Ich habe es mit Django versucht
Ich habe es mit Spleeter versucht
Ich habe es mit cgo versucht
Ich habe versucht, parametrisiert zu verwenden
Ich habe versucht, Argparse zu verwenden
Ich habe versucht, Mimesis zu verwenden
Ich habe versucht, anytree zu verwenden
Ich habe versucht, Pymc auszuführen
Ich habe ARP-Spoofing ausprobiert
Ich habe versucht, Summpy zu verwenden
Ich habe Python> autopep8 ausprobiert
Ich habe versucht, Coturn zu verwenden
Ich habe versucht, Pipenv zu verwenden
Ich habe versucht, Matplotlib zu verwenden
Ich habe versucht, "Anvil" zu verwenden.
Ich habe versucht, Hubot zu verwenden
Ich habe versucht, ESPCN zu verwenden
Ich habe versucht, openpyxl zu verwenden
Ich habe versucht, tief zu lernen
Ich habe AWS CDK ausprobiert!
Ich habe versucht, Ipython zu verwenden
Ich habe versucht zu debuggen.
Ich habe versucht, PyCaret zu verwenden
Ich habe versucht, Cron zu verwenden
Ich habe Kivys Kartenansicht ausprobiert
Ich habe versucht, ngrok zu verwenden
Ich habe versucht, face_recognition zu verwenden
Ich habe versucht, Jupyter zu verwenden
Ich habe versucht, EfficientDet zu verschieben
Ich habe versucht, Shell zu programmieren
Ich habe versucht, doctest zu verwenden
Ich habe Python> Decorator ausprobiert
Ich habe versucht, TensorFlow auszuführen
Ich habe Auto Gluon ausprobiert
Ich habe versucht, Folium zu verwenden
Ich habe versucht, jinja2 zu verwenden
Ich habe AWS Iot ausprobiert
Ich habe die Bayes'sche Optimierung ausprobiert!
Ich habe versucht, Folium zu verwenden
Ich habe versucht, das Zeitfenster zu verwenden
Ich habe Value Iteration Networks ausprobiert
Ich habe versucht, mit Python zu kratzen
Ich habe die Bildklassifizierung von AutoGluon ausprobiert
Ich habe versucht, PredNet zu lernen
[Ich habe versucht, Pythonista 3 zu verwenden] Einführung
Ich habe versucht, easydict (Memo) zu verwenden.
Ich habe versucht, das Gesicht mit Face ++ zu erkennen
Ich habe versucht, RandomForest zu verwenden
Ich habe versucht, mit PyCaret zu clustern
Ich habe versucht, BigQuery ML zu verwenden
Ich habe "K-Fold Target Encoding" ausprobiert.
Ich habe versucht, PCANet zu implementieren