Keras中callbacks类EarlyStopping和TensorBoard函数
结合官方文档和我个人使用情况,关于EarlyStopping和TensorBoard函数的介绍,官方文档链接如下:
keras中callback的官方文档
1.TensorBoard函数
模型训练实时可视化的函数。
以下是我的设置
TensorBoard_callback = keras.callbacks.TensorBoard(log_dir=/file_logdir,histogram_freq=1, write_graph=True, write_grads=False, write_images=True, update_freq=500)
在model.fit中设置callback
model.fit(self.trainX, self.trainy, batch_size=batch_size,
epochs=self.epochs, verbose=verbose,validation_split=0.1,
callbacks=[TensorBoard_callback])
在命令控制台中,输入
tensorboard --logdir=/full_logs_path
控制台会返回一个URL,复制到浏览器(我用的是Chrome)即可看到。
踩过的坑:我的版本是tensorflow2.1,通过anaconda下载,其附带的tensorboard版本是2.2,在命令台输入时,在’logdir’后’='前,多输入了一个空格,导致其加载失败T_T。
可视化界面中可以看到模型训练的损失和模型的大致格式。
2.EarlyStopping函数
以下是我的设置
EarlyStopping_callback = callbacks.EarlyStopping(monitor='val_loss',min_delta=0.05,patience=50,verbose=0,restore_best_weights=True)
其中,monitor表示监视的训练情况,min_delta表示是最小变化量,patience表示容忍的时间,restore_best_weights=True表示返回记录中表现最好的训练结果,false表示返回训练末的训练结果。
verbose:有三个参数值,0表示不在标准输出流输出日志信息,1表示输出精度条记录,2表示为每个epoch输出一行记录。
另外,还有一项关键参数为model,有min,max,和auto三种,默认为auto,分别表示减少,增加和自动。
本文以我设置的参数为例,说明他们的作用:
设置的监督条件为’val_loss’,验证集的损失函数,min_delta=0.05和patience=50,表示在50轮中,如果min_delta下降的幅度不超过0.05,认为模型已经出现了过拟合的现象,停止实验。这里使用的model是auto,自动识别为min。
综合以上两者,一起作用与model.fit,代码如下:
model.fit(self.trainX, self.trainy, batch_size=batch_size,
epochs=self.epochs, verbose=verbose,validation_split=0.1,
callbacks=[TensorBoard_callback,EarlyStopping_callback])
此外,callback中还有一些相关函数,可直接参考官方文档使用。
keras中callback的官方文档