Sehen Sie sich Keynotes, Produktsitzungen, Workshops und mehr in Google I / O an. Siehe Wiedergabeliste

Einführung in den Keras Tuner

Ansicht auf TensorFlow.org In Google Colab ausführen Quelle auf GitHub anzeigen Notizbuch herunterladen

Überblick

Der Keras-Tuner ist eine Bibliothek, mit der Sie den optimalen Satz von Hyperparametern für Ihr TensorFlow-Programm auswählen können. Der Prozess zur Auswahl des richtigen Satzes von Hyperparametern für Ihre Anwendung für maschinelles Lernen (ML) wird als Hyperparameter-Tuning oder Hypertuning bezeichnet .

Hyperparameter sind die Variablen, die den Trainingsprozess und die Topologie eines ML-Modells steuern. Diese Variablen bleiben während des Trainingsprozesses konstant und wirken sich direkt auf die Leistung Ihres ML-Programms aus. Es gibt zwei Arten von Hyperparametern:

  1. Modellhyperparameter, die die Modellauswahl beeinflussen, z. B. Anzahl und Breite der ausgeblendeten Ebenen
  2. Algorithmus-Hyperparameter, die die Geschwindigkeit und Qualität des Lernalgorithmus beeinflussen, wie z. B. die Lernrate für den stochastischen Gradientenabstieg (SGD) und die Anzahl der nächsten Nachbarn für einen KNN-Klassifikator (Nearest Neighbors)

In diesem Lernprogramm verwenden Sie den Keras-Tuner, um Hypertuning für eine Bildklassifizierungsanwendung durchzuführen.

Einrichten

import tensorflow as tf
from tensorflow import keras

Installieren und importieren Sie den Keras Tuner.

pip install -q -U keras-tuner
import kerastuner as kt

Laden Sie den Datensatz herunter und bereiten Sie ihn vor

In diesem Tutorial verwenden Sie den Keras-Tuner, um die besten Hyperparameter für ein Modell für maschinelles Lernen zu finden, das Bilder von Kleidung aus dem Fashion MNIST-Datensatz klassifiziert .

Laden Sie die Daten.

(img_train, label_train), (img_test, label_test) = keras.datasets.fashion_mnist.load_data()
# Normalize pixel values between 0 and 1
img_train = img_train.astype('float32') / 255.0
img_test = img_test.astype('float32') / 255.0

Definieren Sie das Modell

Wenn Sie ein Modell für das Hypertuning erstellen, definieren Sie neben der Modellarchitektur auch den Hyperparametersuchbereich. Das Modell, das Sie für das Hypertuning eingerichtet haben, wird als Hypermodell bezeichnet .

Sie können ein Hypermodell durch zwei Ansätze definieren:

  • Mithilfe einer Model Builder-Funktion
  • Durch Unterklasse der HyperModel Klasse der Keras-Tuner-API

Sie können auch zwei vordefinierte HyperModel Klassen verwenden - HyperXception und HyperResNet für Computer Vision-Anwendungen.

In diesem Lernprogramm verwenden Sie eine Model Builder-Funktion, um das Bildklassifizierungsmodell zu definieren. Die Model Builder-Funktion gibt ein kompiliertes Modell zurück und verwendet Hyperparameter, die Sie inline definieren, um das Modell zu optimieren.

def model_builder(hp):
  model = keras.Sequential()
  model.add(keras.layers.Flatten(input_shape=(28, 28)))

  # Tune the number of units in the first Dense layer
  # Choose an optimal value between 32-512
  hp_units = hp.Int('units', min_value=32, max_value=512, step=32)
  model.add(keras.layers.Dense(units=hp_units, activation='relu'))
  model.add(keras.layers.Dense(10))

  # Tune the learning rate for the optimizer
  # Choose an optimal value from 0.01, 0.001, or 0.0001
  hp_learning_rate = hp.Choice('learning_rate', values=[1e-2, 1e-3, 1e-4])

  model.compile(optimizer=keras.optimizers.Adam(learning_rate=hp_learning_rate),
                loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
                metrics=['accuracy'])

  return model

Instanziieren Sie den Tuner und führen Sie ein Hypertuning durch

Instanziieren Sie den Tuner, um das Hypertuning durchzuführen. Für den Keras-Tuner stehen vier Tuner zur Verfügung: RandomSearch , Hyperband , BayesianOptimization und Sklearn . In diesem Tutorial verwenden Sie den Hyperband- Tuner.

Um den Hyper Tuner zu instanziieren, müssen Sie den Hyper angeben, das objective zu optimieren und die maximale Anzahl von Epochen zu Zuge ( max_epochs ).

tuner = kt.Hyperband(model_builder,
                     objective='val_accuracy',
                     max_epochs=10,
                     factor=3,
                     directory='my_dir',
                     project_name='intro_to_kt')

Der Hyperband-Optimierungsalgorithmus verwendet die adaptive Ressourcenzuweisung und das frühzeitige Anhalten, um schnell zu einem leistungsstarken Modell zu konvergieren. Dies geschieht mit einer Sportmeisterschaftshalterung. Der Algorithmus trainiert eine große Anzahl von Modellen für einige Epochen und überträgt nur die leistungsstärkste Hälfte der Modelle auf die nächste Runde. Hyperband bestimmt die Anzahl der Modelle, die in einer Klammer trainiert werden sollen, indem 1 + log- factor ( max_epochs ) max_epochs und auf die nächste Ganzzahl max_epochs .

Erstellen Sie einen Rückruf, um das Training vorzeitig zu beenden, nachdem Sie einen bestimmten Wert für den Validierungsverlust erreicht haben.

stop_early = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=5)

Führen Sie die Hyperparametersuche aus. Die Argumente für die Suchmethode sind die gleichen wie für tf.keras.model.fit zusätzlich zu dem obigen Rückruf.

tuner.search(img_train, label_train, epochs=50, validation_split=0.2, callbacks=[stop_early])

# Get the optimal hyperparameters
best_hps=tuner.get_best_hyperparameters(num_trials=1)[0]

print(f"""
The hyperparameter search is complete. The optimal number of units in the first densely-connected
layer is {best_hps.get('units')} and the optimal learning rate for the optimizer
is {best_hps.get('learning_rate')}.
""")
Trial 30 Complete [00h 00m 29s]
val_accuracy: 0.8802499771118164

Best val_accuracy So Far: 0.8914166688919067
Total elapsed time: 00h 06m 15s
INFO:tensorflow:Oracle triggered exit

The hyperparameter search is complete. The optimal number of units in the first densely-connected
layer is 192 and the optimal learning rate for the optimizer
is 0.001.

Trainiere das Modell

Finden Sie die optimale Anzahl von Epochen, um das Modell mit den aus der Suche erhaltenen Hyperparametern zu trainieren.

# Build the model with the optimal hyperparameters and train it on the data for 50 epochs
model = tuner.hypermodel.build(best_hps)
history = model.fit(img_train, label_train, epochs=50, validation_split=0.2)

val_acc_per_epoch = history.history['val_accuracy']
best_epoch = val_acc_per_epoch.index(max(val_acc_per_epoch)) + 1
print('Best epoch: %d' % (best_epoch,))
Epoch 1/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.5072 - accuracy: 0.8204 - val_loss: 0.4039 - val_accuracy: 0.8557
Epoch 2/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.3786 - accuracy: 0.8640 - val_loss: 0.3690 - val_accuracy: 0.8673
Epoch 3/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.3374 - accuracy: 0.8756 - val_loss: 0.3751 - val_accuracy: 0.8613
Epoch 4/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.3140 - accuracy: 0.8856 - val_loss: 0.3558 - val_accuracy: 0.8716
Epoch 5/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2921 - accuracy: 0.8915 - val_loss: 0.3387 - val_accuracy: 0.8798
Epoch 6/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2772 - accuracy: 0.8961 - val_loss: 0.3370 - val_accuracy: 0.8782
Epoch 7/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2639 - accuracy: 0.9021 - val_loss: 0.3242 - val_accuracy: 0.8841
Epoch 8/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2554 - accuracy: 0.9049 - val_loss: 0.3318 - val_accuracy: 0.8831
Epoch 9/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2421 - accuracy: 0.9101 - val_loss: 0.3079 - val_accuracy: 0.8941
Epoch 10/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2320 - accuracy: 0.9129 - val_loss: 0.3373 - val_accuracy: 0.8817
Epoch 11/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2237 - accuracy: 0.9155 - val_loss: 0.3108 - val_accuracy: 0.8921
Epoch 12/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2156 - accuracy: 0.9189 - val_loss: 0.3326 - val_accuracy: 0.8878
Epoch 13/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2096 - accuracy: 0.9214 - val_loss: 0.3288 - val_accuracy: 0.8880
Epoch 14/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2014 - accuracy: 0.9245 - val_loss: 0.3428 - val_accuracy: 0.8865
Epoch 15/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1947 - accuracy: 0.9264 - val_loss: 0.3246 - val_accuracy: 0.8917
Epoch 16/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1900 - accuracy: 0.9289 - val_loss: 0.3264 - val_accuracy: 0.8924
Epoch 17/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1824 - accuracy: 0.9315 - val_loss: 0.3364 - val_accuracy: 0.8905
Epoch 18/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1765 - accuracy: 0.9335 - val_loss: 0.3366 - val_accuracy: 0.8913
Epoch 19/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1678 - accuracy: 0.9365 - val_loss: 0.3341 - val_accuracy: 0.8921
Epoch 20/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1683 - accuracy: 0.9376 - val_loss: 0.3515 - val_accuracy: 0.8921
Epoch 21/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1625 - accuracy: 0.9379 - val_loss: 0.3996 - val_accuracy: 0.8795
Epoch 22/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1578 - accuracy: 0.9412 - val_loss: 0.3593 - val_accuracy: 0.8896
Epoch 23/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1514 - accuracy: 0.9441 - val_loss: 0.3501 - val_accuracy: 0.8953
Epoch 24/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1475 - accuracy: 0.9441 - val_loss: 0.3732 - val_accuracy: 0.8887
Epoch 25/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1457 - accuracy: 0.9457 - val_loss: 0.3641 - val_accuracy: 0.8920
Epoch 26/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1395 - accuracy: 0.9480 - val_loss: 0.3985 - val_accuracy: 0.8848
Epoch 27/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1384 - accuracy: 0.9481 - val_loss: 0.3744 - val_accuracy: 0.8953
Epoch 28/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1343 - accuracy: 0.9489 - val_loss: 0.3805 - val_accuracy: 0.8943
Epoch 29/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1297 - accuracy: 0.9506 - val_loss: 0.3961 - val_accuracy: 0.8897
Epoch 30/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1262 - accuracy: 0.9528 - val_loss: 0.4176 - val_accuracy: 0.8874
Epoch 31/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1260 - accuracy: 0.9530 - val_loss: 0.4232 - val_accuracy: 0.8916
Epoch 32/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1177 - accuracy: 0.9561 - val_loss: 0.4063 - val_accuracy: 0.8927
Epoch 33/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1212 - accuracy: 0.9542 - val_loss: 0.3909 - val_accuracy: 0.8951
Epoch 34/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1147 - accuracy: 0.9571 - val_loss: 0.4003 - val_accuracy: 0.8923
Epoch 35/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1112 - accuracy: 0.9585 - val_loss: 0.4286 - val_accuracy: 0.8878
Epoch 36/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1110 - accuracy: 0.9579 - val_loss: 0.4545 - val_accuracy: 0.8916
Epoch 37/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1078 - accuracy: 0.9595 - val_loss: 0.4308 - val_accuracy: 0.8941
Epoch 38/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1042 - accuracy: 0.9602 - val_loss: 0.4514 - val_accuracy: 0.8911
Epoch 39/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1054 - accuracy: 0.9606 - val_loss: 0.4398 - val_accuracy: 0.8956
Epoch 40/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.0988 - accuracy: 0.9626 - val_loss: 0.4414 - val_accuracy: 0.8952
Epoch 41/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.0964 - accuracy: 0.9638 - val_loss: 0.4481 - val_accuracy: 0.8930
Epoch 42/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.0960 - accuracy: 0.9634 - val_loss: 0.4716 - val_accuracy: 0.8947
Epoch 43/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.0960 - accuracy: 0.9639 - val_loss: 0.4822 - val_accuracy: 0.8888
Epoch 44/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.0936 - accuracy: 0.9654 - val_loss: 0.4759 - val_accuracy: 0.8907
Epoch 45/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.0914 - accuracy: 0.9648 - val_loss: 0.4711 - val_accuracy: 0.8925
Epoch 46/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.0879 - accuracy: 0.9670 - val_loss: 0.4892 - val_accuracy: 0.8928
Epoch 47/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.0894 - accuracy: 0.9670 - val_loss: 0.4951 - val_accuracy: 0.8903
Epoch 48/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.0868 - accuracy: 0.9670 - val_loss: 0.4773 - val_accuracy: 0.8934
Epoch 49/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.0838 - accuracy: 0.9678 - val_loss: 0.5344 - val_accuracy: 0.8932
Epoch 50/50
1500/1500 [==============================] - 3s 2ms/step - loss: 0.0809 - accuracy: 0.9694 - val_loss: 0.5017 - val_accuracy: 0.8913
Best epoch: 39

Instanziieren Sie das Hypermodell erneut und trainieren Sie es mit der optimalen Anzahl von Epochen von oben.

hypermodel = tuner.hypermodel.build(best_hps)

# Retrain the model
hypermodel.fit(img_train, label_train, epochs=best_epoch, validation_split=0.2)
Epoch 1/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.5135 - accuracy: 0.8172 - val_loss: 0.4123 - val_accuracy: 0.8545
Epoch 2/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.3803 - accuracy: 0.8616 - val_loss: 0.3747 - val_accuracy: 0.8633
Epoch 3/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.3389 - accuracy: 0.8764 - val_loss: 0.3536 - val_accuracy: 0.8740
Epoch 4/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.3139 - accuracy: 0.8843 - val_loss: 0.3427 - val_accuracy: 0.8783
Epoch 5/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2936 - accuracy: 0.8919 - val_loss: 0.3568 - val_accuracy: 0.8644
Epoch 6/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2791 - accuracy: 0.8967 - val_loss: 0.3199 - val_accuracy: 0.8833
Epoch 7/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2691 - accuracy: 0.8999 - val_loss: 0.3253 - val_accuracy: 0.8844
Epoch 8/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2551 - accuracy: 0.9049 - val_loss: 0.3127 - val_accuracy: 0.8874
Epoch 9/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2441 - accuracy: 0.9092 - val_loss: 0.3072 - val_accuracy: 0.8907
Epoch 10/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2340 - accuracy: 0.9120 - val_loss: 0.3566 - val_accuracy: 0.8731
Epoch 11/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2274 - accuracy: 0.9136 - val_loss: 0.3122 - val_accuracy: 0.8857
Epoch 12/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2160 - accuracy: 0.9198 - val_loss: 0.3140 - val_accuracy: 0.8895
Epoch 13/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2127 - accuracy: 0.9201 - val_loss: 0.3128 - val_accuracy: 0.8882
Epoch 14/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2031 - accuracy: 0.9239 - val_loss: 0.3262 - val_accuracy: 0.8890
Epoch 15/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1946 - accuracy: 0.9272 - val_loss: 0.3448 - val_accuracy: 0.8829
Epoch 16/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1904 - accuracy: 0.9281 - val_loss: 0.3438 - val_accuracy: 0.8901
Epoch 17/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1823 - accuracy: 0.9323 - val_loss: 0.3418 - val_accuracy: 0.8867
Epoch 18/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1778 - accuracy: 0.9338 - val_loss: 0.3253 - val_accuracy: 0.8945
Epoch 19/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1722 - accuracy: 0.9348 - val_loss: 0.3461 - val_accuracy: 0.8904
Epoch 20/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1683 - accuracy: 0.9364 - val_loss: 0.3429 - val_accuracy: 0.8907
Epoch 21/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1620 - accuracy: 0.9392 - val_loss: 0.3503 - val_accuracy: 0.8936
Epoch 22/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1582 - accuracy: 0.9403 - val_loss: 0.3548 - val_accuracy: 0.8907
Epoch 23/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1540 - accuracy: 0.9424 - val_loss: 0.3595 - val_accuracy: 0.8912
Epoch 24/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1515 - accuracy: 0.9426 - val_loss: 0.3673 - val_accuracy: 0.8924
Epoch 25/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1447 - accuracy: 0.9457 - val_loss: 0.3481 - val_accuracy: 0.8962
Epoch 26/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1445 - accuracy: 0.9448 - val_loss: 0.3739 - val_accuracy: 0.8854
Epoch 27/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1383 - accuracy: 0.9489 - val_loss: 0.3674 - val_accuracy: 0.8945
Epoch 28/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1320 - accuracy: 0.9509 - val_loss: 0.3998 - val_accuracy: 0.8875
Epoch 29/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1304 - accuracy: 0.9507 - val_loss: 0.3773 - val_accuracy: 0.8937
Epoch 30/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1276 - accuracy: 0.9517 - val_loss: 0.3707 - val_accuracy: 0.8923
Epoch 31/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1249 - accuracy: 0.9524 - val_loss: 0.3825 - val_accuracy: 0.8914
Epoch 32/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1226 - accuracy: 0.9535 - val_loss: 0.4021 - val_accuracy: 0.8900
Epoch 33/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1178 - accuracy: 0.9559 - val_loss: 0.4012 - val_accuracy: 0.8937
Epoch 34/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1132 - accuracy: 0.9589 - val_loss: 0.4136 - val_accuracy: 0.8896
Epoch 35/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1148 - accuracy: 0.9570 - val_loss: 0.4056 - val_accuracy: 0.8898
Epoch 36/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1111 - accuracy: 0.9574 - val_loss: 0.4090 - val_accuracy: 0.8914
Epoch 37/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1072 - accuracy: 0.9599 - val_loss: 0.4248 - val_accuracy: 0.8931
Epoch 38/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1038 - accuracy: 0.9612 - val_loss: 0.4088 - val_accuracy: 0.8954
Epoch 39/39
1500/1500 [==============================] - 3s 2ms/step - loss: 0.1043 - accuracy: 0.9607 - val_loss: 0.4319 - val_accuracy: 0.8887
<tensorflow.python.keras.callbacks.History at 0x7fae8233f090>

Um dieses Tutorial zu beenden, bewerten Sie das Hypermodell anhand der Testdaten.

eval_result = hypermodel.evaluate(img_test, label_test)
print("[test loss, test accuracy]:", eval_result)
313/313 [==============================] - 1s 2ms/step - loss: 0.4770 - accuracy: 0.8829
[test loss, test accuracy]: [0.4769580066204071, 0.8828999996185303]

Das my_dir/intro_to_kt enthält detaillierte Protokolle und Prüfpunkte für jeden Versuch (Modellkonfiguration), der während der Hyperparametersuche ausgeführt wird. Wenn Sie die Hyperparametersuche erneut ausführen, verwendet der Keras-Tuner den vorhandenen Status aus diesen Protokollen, um die Suche fortzusetzen. Um dieses Verhalten zu deaktivieren, übergeben Sie beim Instanziieren des Tuners ein zusätzliches Argument overwrite=True .

Zusammenfassung

In diesem Tutorial haben Sie gelernt, wie Sie mit dem Keras-Tuner Hyperparameter für ein Modell optimieren. Weitere Informationen zum Keras-Tuner finden Sie in den folgenden zusätzlichen Ressourcen:

Schauen Sie sich auch das HParams-Dashboard in TensorBoard an, um Ihre Modellhyperparameter interaktiv zu optimieren.