Обратный вызов активен после определенной эпохи Keras

goodcow спросил: 13 июня 2018 в 05:36 в: python

Я использую обратный вызов ModelCheckpoint для контроля точности проверки. Однако иногда случайные всплески точности проверки в начале тренировки создают ложный сигнал. Есть ли обратный вызов, который вызывается только через определенную эпоху, например. после эпохи 100, когда "случайные всплески" поселились? Спасибо!


1 ответ

Есть решение
Primusa ответил: 13 июня 2018 в 09:39

Вы можете просто сделать свой собственный обратный вызов:

from keras.callbacks import ModelCheckpoint
from keras.models import Sequential
from keras.layers import Denseimport numpy as np# Subclass ModelCheckpoint
class MyModelCheckpoint(ModelCheckpoint):    def __init__(self, *args, **kwargs):
        super(MyModelCheckpoint, self).__init__(*args, **kwargs)    # redefine the save so it only activates after 100 epochs
    def on_epoch_end(self, epoch, logs=None):
        if epoch > 100: super(MyModelCheckpoint, self).on_epoch_end(epoch, logs)# A simple example neural net
model = Sequential()
model.add(Dense(1, input_dim=5))
model.compile(loss='mse', optimizer='adam')# Toy dataset
X = np.random.rand(5, 5)
y = np.random.rand(5, 1)# Create checkpointer as you would with a regular ModelCheckpoint
checkpointer = MyModelCheckpoint(filepath='{epoch}.h5')# Fit the model using it as a callback
model.fit(X, y, callbacks=[checkpointer], verbose=1, epochs=200)

Дополнительное видео по вопросу: Обратный вызов активен после определенной эпохи Keras

Deep Learning with Python, TensorFlow, and Keras tutorial

Optimizing with TensorBoard - Deep Learning w/ Python, TensorFlow & Keras p.5

Callbacks in Keras