训练回调
概述
回调是在训练过程的特定阶段应用的一组函数。您可以使用回调来获得训练期间模型的内部状态和统计信息的视图。你可以传递一个回调列表(作为关键字参数回调
)符合()
函数。然后在训练的每个阶段调用回调的相关方法。
例如:
图书馆(keras)#生成虚拟训练数据数据< -矩阵(rexp(1000*784),nrow =1000,ncol =784)标签< -矩阵(轮(runif(1000*10,最小值=0,max =9)),nrow =1000,ncol =10)#创建模型模型< -keras_model_sequential()#添加图层和编译模型% > %layer_dense(32,input_shape =c(784))% > %layer_activation(“relu”)% > %layer_dense(10)% > %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(单位=10,input_shape =c(784))% > %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
-
在评估或验证结束时调用。