Keras 2 API 文档 / 回调 API / LambdaCallback

LambdaCallback

[源代码]

LambdaCallback

tf_keras.callbacks.LambdaCallback(
    on_epoch_begin=None,
    on_epoch_end=None,
    on_batch_begin=None,
    on_batch_end=None,
    on_train_begin=None,
    on_train_end=None,
    **kwargs
)

用于动态创建简单自定义回调的回调函数。

此回调函数使用匿名函数构建,这些函数将在适当的时间(在 Model.{fit | evaluate | predict} 期间)被调用。 请注意,回调函数需要位置参数,如下所示:

  • on_epoch_beginon_epoch_end 需要两个位置参数:epochlogs
  • on_batch_beginon_batch_end 需要两个位置参数:batchlogs
  • on_train_beginon_train_end 需要一个位置参数:logs

参数

  • on_epoch_begin:在每个 epoch 开始时调用。
  • on_epoch_end:在每个 epoch 结束时调用。
  • on_batch_begin:在每个 batch 开始时调用。
  • on_batch_end:在每个 batch 结束时调用。
  • on_train_begin:在模型训练开始时调用。
  • on_train_end:在模型训练结束时调用。

示例

# Print the batch number at the beginning of every batch.
batch_print_callback = LambdaCallback(
    on_batch_begin=lambda batch,logs: print(batch))

# Stream the epoch loss to a file in JSON format. The file content
# is not well-formed JSON but rather has a JSON object per line.
import json
json_log = open('loss_log.json', mode='wt', buffering=1)
json_logging_callback = LambdaCallback(
    on_epoch_end=lambda epoch, logs: json_log.write(
        json.dumps({'epoch': epoch, 'loss': logs['loss']}) + '\n'),
    on_train_end=lambda logs: json_log.close()
)

# Terminate some processes after having finished model training.
processes = ...
cleanup_callback = LambdaCallback(
    on_train_end=lambda logs: [
        p.terminate() for p in processes if p.is_alive()])

model.fit(...,
          callbacks=[batch_print_callback,
                     json_logging_callback,
                     cleanup_callback])