训练回调

    概述

    回调是在训练过程的特定阶段应用的一组函数。您可以使用回调来获得训练期间模型的内部状态和统计信息的视图。你可以传递一个回调列表(作为关键字参数回调)符合()函数。然后在训练的每个阶段调用回调的相关方法。

    例如:

    图书馆(keras)#生成虚拟训练数据数据< -矩阵rexp1000784),nrow =1000ncol =784标签< -矩阵runif100010最小值=0max =9)),nrow =1000ncol =10#创建模型模型< -keras_model_sequential()#添加图层和编译模型% > %layer_dense32input_shape =c784))% > %layer_activation“relu”% > %layer_dense10% > %layer_activation“softmax”% > %编译损失=“binary_crossentropy”优化器=optimizer_sgd(),指标=“准确性”# fit与回调模型% > %适合(数据、标签回调函数=列表callback_model_checkpoint“checkpoints.h5”),callback_reduce_lr_on_plateau监控=“val_loss”系数=0.1))

    在回调

    以下内置回调函数是Keras的一部分:

    callback_progbar_logger ()

    将指标打印到标准输出的回调。

    callback_model_checkpoint ()

    在每个纪元之后保存模型。

    callback_early_stopping ()

    当监控的数量停止提高时停止训练。

    callback_remote_monitor ()

    用于将事件流传输到服务器的回调。

    callback_learning_rate_scheduler ()

    学习速率调度器。

    callback_tensorboard ()

    TensorBoard基本的可视化

    callback_reduce_lr_on_plateau ()

    当指标停止改进时,降低学习率。

    callback_csv_logger ()

    回调,将纪元结果流到csv文件

    callback_lambda ()

    创建自定义回调

    自定义回调

    您可以通过创建新的回调来创建自定义回调R6类继承自KerasCallback类。

    下面是一个简单的例子,在训练期间保存每个批次的损失列表:

    图书馆(keras)#定义自定义回调类LossHistory < -R6::R6Class“LossHistory”继承=KerasCallback,公共=列表损失=on_batch_end =函数(批处理,日志=列表()) {自我损失< -c(自我损失,日志[[“损失”]])))#定义模型模型< -keras_model_sequential()#添加图层和编译模型% > %layer_dense单位=10input_shape =c784))% > %layer_activation激活=“softmax”% > %编译损失=“categorical_crossentropy”优化器=“rmsprop”#创建历史回调对象,并在训练中使用它< -历史LossHistory()模型% > %适合X_train Y_train,batch_size =128时代=20.verbose =0回调函数=列表(历史)#打印累计损失历史损失
    [1] 0.6604760 0.3547246 0.2595316 0.2590170…

    字段

    自定义回调对象可以通过以下字段访问当前模型及其训练参数:

    自我params美元

    带有训练参数的命名列表(如;冗长,批大小,周期数等等)。

    自美元模型

    参考正在训练的Keras模型。

    方法

    自定义回调对象可以实现以下一个或多个方法:

    on_epoch_begin(时代、日志)

    在每个纪元的开始时被称为。

    on_epoch_end(时代、日志)

    在每个纪元结束时调用。

    on_batch_begin(批处理、日志)

    每批货一开始就叫。

    on_batch_end(批处理、日志)

    在每批货结束时调用。

    on_train_begin(日志)

    训练开始时叫的。

    on_train_end(日志)

    训练结束时叫的。

    on_train_batch_begin

    每批货一开始都叫。

    on_train_batch_end

    每批货结束时都要打电话。”

    on_predict_batch_begin

    在预测方法的批处理开始时调用。

    on_predict_batch_end

    在预测方法的批处理结束时调用。

    on_predict_begin

    在预测开始时调用。

    on_predict_end

    在预测结束时调用。

    on_test_batch_begin

    在求值方法的批处理开始时调用。如果提供了验证数据,也在fit方法中的验证批处理开始时调用。

    on_test_batch_end

    在求值方法的批处理结束时调用。如果提供了验证数据,也在fit方法中的验证批处理结束时调用。

    on_test_begin

    在评估或验证开始时调用。

    on_test_end

    在评估或验证结束时调用。