Как сохранить / перезаписать мою модель TensorFlow / Keras ТОЛЬКО при повышении точности проверки? - PullRequest
2 голосов
/ 20 февраля 2020

Уже многое есть о сохранении моделей, но я изо всех сил пытаюсь понять, как я могу сохранить свою модель только тогда, когда она улучшит val_accuracy. Моя модель выглядит так:

model = keras.Sequential([
    keras.layers.Embedding(numberOfWords,
                           embedding_vector_length, input_length=1000),
    keras.layers.LSTM(128),
    keras.layers.Dropout(0.3),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dropout(0.3),
    keras.layers.Dense(64, activation='relu'),
    keras.layers.Dropout(0.3),
    keras.layers.Dense(1, activation='sigmoid')
])

model.compile(optimizer=tf.keras.optimizers.Adam(lr=1e-3, decay=1e-5), loss='binary_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=200, batch_size=32,
          validation_data=(x_test, y_test))

Во время обучения я хочу сохранить модель после первой эпохи. Затем, после каждой эпохи, если val_accuracy улучшается, я хочу перезаписать старую модель новой.

Как мне это сделать?

1 Ответ

1 голос
/ 20 февраля 2020

Вы просто должны определить Callback-List и ввести его в объявление model.fit: Keras_fit В этом примере это просто сохранение best weigths, поэтому оно фактически перезаписывает старые, и сейфы это в hdf5 формате. Надеюсь, что решил вашу проблему:)

from keras.callbacks import ModelCheckpoint

filepath="weights.best.hdf5"

checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1,save_best_only=True, mode='max')
callbacks_list = [checkpoint]


model.fit(x_train, y_train, epochs=200,,callbacks=callbacks_list, batch_size=32,
          validation_data=(x_test, y_test))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...