Dans l'industrie du machine learning, les temps sont vraiment "AutoML", mais il semble que Keras dispose également d'un framework qui prend en charge AutoML.
AutoKeras est un module Keras compatible AutoML développé au DATA Lab of Texas A & M University. L'objectif est de permettre à chacun d'accéder à l'apprentissage automatique.
Les conditions d'exécution d'AutoKeras sont les suivantes.
--Python 3.5 et supérieur --TensorFlow 2.1.0 ou supérieur
Il s'appelait autrefois PyTorch, mais maintenant il est basé sur TensorFlow.
L'installation d'AutoKeras est facile et vous pouvez le faire avec un seul pip.
Si vous essayez d'implémenter le MNIST familier, le code ressemblera à ceci:
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)))
La création du modèle se termine par une simple fonction appelée "ImageClassifier ()". Il est difficile de croire que cela seul rendra les ajustements de calque et même les paramètres bons.
Les 6 types suivants de discriminateurs intégrés sont disponibles.
--ImageClassifier --ImageRegressor --TextClassifier --TextRegressor --StructuredDataClassifier --StructuredDataRegressor
C'est comme [image, texte, données structurées] x [classification, régression]. Une machine d'identification à usage général (AutoModel) est également disponible.
"Max_trials" est fourni comme argument, et il s'agit du nombre d'essais de modèle. Plus vous en avez, plus vous pouvez essayer de modèles, mais bien sûr, cela prend beaucoup de temps.
En tant que fonction principale, familier
Est préparé. Au moment de "fit ()", le modèle est essayé et l'entraînement est répété avec le nombre d'époques spécifié (avec EarlyStopping).
De plus, lorsque l'essai du modèle est terminé, le résultat s'affiche comme suit.
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
De plus, pour pouvoir sortir le modèle optimal trouvé
Il existe également une fonction appelée. Le type de retour étant tf.keras.Model, vous pouvez l'utiliser de différentes manières.
Si vous obtenez la sortie ci-dessus avec export_model () et l'affichez avec summary (), ce sera comme suit.
_________________________________________________________________
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
Quand j'ai essayé de sortir la précision avec seulement 3 essais,
est devenu.
Quand je l'ai essayé avec un modèle Keras très général (je me suis référé à ici)
Parce que c'était le cas, il a été décidé que presque la même précision pouvait être obtenue automatiquement.
J'ai essayé d'essayer avec d'autres données (données structurées, etc.), mais parfois cela ne fonctionnait pas en raison d'une mémoire GPU insuffisante. .. ..
Les conditions peuvent être limitées, mais c'est formidable de pouvoir facilement essayer l'apprentissage automatique. Cependant, il est extrêmement lent, vous voulez donc un matériel puissant.
Cela a fonctionné sur CUDA 10.1, mais pas sur 10.2.
Recommended Posts