keras自定义回调函数查看训练的自定义回调函数查看训练的loss和和accuracy方式方式
前言:前言:
keras是一个十分便捷的开发框架,为了更好的追踪网络训练过程中的损失函数loss和准确率accuracy,我们有几种处理方
式,第一种是直接通过 history=model.fit(),来返回一个history对象,通过这个对象可以访问到训练过程训练集的loss和
accuracy以及验证集的loss和accuracy。
第二种方式就是通过自定义一个回调函数Call backs,来实现这一功能,本文主要讲解第二种方式。
一、如何构建回调函数一、如何构建回调函数Callbacks
本文所针对的例子是卷积神经网络Lenet-5,数据集是mnist数据集。
1.1 什么是回调函数什么是回调函数
回调函数是一个函数的合集,会在训练的阶段中所使用。你可以使用回调函数来查看训练模型的内在状态和统计。你可以传递
一个列表的回调函数(作为 callbacks 关键字参数)到 Sequential 或 Model 类型的 .fit() 方法。在训练时,相应的回调函数的
方法就会被在各自的阶段被调用。
这里有两个关键的点:
(1)状态和统计:其实就是我们希望模型在训练过程中需要从过程中获取什么信息,比如我的损失loss,准确率accuracy等
信息就是训练过程中的状态与统计信息;再比如我希望每一个epoch结束之后打印一些相应的自定义提示信息,这也是状态信
息。
(2)各自的阶段:模型的训练一般是分为多少个epoch,然后每一个epoch又分为多少个batch,所以这个阶段可以是在每一
个epoch之后执行回调函数,也可以是在每一个batch之后执行回调函数。
1.2 回调函数的本质回调函数的本质
其实回调函数只是一个很形象的说法,它的本质是一个类,我们直接通过 history=model.fit()返回的history对象就是一个回调
函数History类的对象,而History类又继承自Callback类。
回调函数的基类——Call back,他的定义如下:
class Callback(object): # 用来组建新的回调函数的抽象基类
def __init__(self):
self.validation_data = None
self.model = None
def set_params(self, params):
self.params = params
def set_model(self, model):
self.model = model
def on_epoch_begin(self, epoch, logs=None):
pass
def on_epoch_end(self, epoch, logs=None):
pass
def on_batch_begin(self, batch, logs=None):
pass
def on_batch_end(self, batch, logs=None):
pass
def on_train_begin(self, logs=None):
pass
def on_train_end(self, logs=None):
pass
属性
params: 它是一个字典类型。训练参数, (例如,verbosity, batch size, number of epochs…)。
model: keras.models.Model 的实例。 指代被训练模型。
评论0
最新资源