keras の callback関数の指定方法

  • EarlyStopping: min_delta 以下の improvement しか、見られない時に patience 回しか耐えない。monitor より確認
  • ReduceLROnPlateau: min_delta 以下の改善しか見られない時に、学習率 (lr) に factor を掛ける。
  • ModelCheckpoint: model_name で保存する。weights のみ保存や、best_params の保存のみなどの指定が可能。
from keras.callbacks import EarlyStopping, ModelCheckpoint, ReduceLROnPlateau
from keras.optimizers import Adam

for num in range(1, 4):
    model_name = 'cropping-%01d.h5' % num
    print(model_name)
    model.compile(Adam(lr=0.032), loss='mean_squared_error')
    model.fit_generator(
        TrainingData(), epochs=50, max_queue_size=12, workers=4, verbose=1,
        validation_data=(val_a, val_b),
        callbacks=[
            EarlyStopping(monitor='val_loss', patience=9, min_delta=0.1, verbose=1),
            ReduceLROnPlateau(monitor='val_loss', patience=3, min_delta=0.1, factor=0.25, min_lr=0.002, verbose=1),
            ModelCheckpoint(model_name, save_best_only=True, save_weights_only=True),
        ])
    model.load_weights(model_name)
    model.evaluate(val_a, val_b, verbose=0)