Tensorflow2.0回调函数的使用

前章提示:
为什么要使数据归一化:
归一化的目的就是使在训练过程中,训练模型不会因为部分畸形数据而导致训练模型出现差错,从而保证准确性,因此也被称为标准化,一般来说转换成[ 0,1]是概率类,转化为[-1,1]是坐标轴类型。

回调函数

回调函数是一类函数的集合,在使用fit函数进行训练的时候,会出现无法确定训练次数是否过拟合,同时无法人为的干扰从而控制,因此回调函数的目的就是进行优化,重而使得模型在训练的时候改变模型的状态。

其中较为重要的三个部分如下
Tensorboard,earlystopping,ModelCheckpoint

Tensorboard

是谷歌的一个可视化工具可以将数据以图表的形式表现出来,同时可以查看个人的函数模型层数,相当于一个思维导图

个人认为有一个缺点就是,对于英语差的学者不是很友好
在这里插入图片描述

EarlyStopping

使用方法:
keras.callbacks.EarlyStopping( monitor=‘val_loss’, min_delta=0, patience=0, verbose=0, mode=‘auto’, baseline=None, restore_best_weights=False)
参数含义:其中重点为加黑字体
monitor: 被监测的数据。
min_delta: 在被监测的数据中被认为是提升的最小变化,
例如,小于 min_delta 的绝对变化会被认为没有提升。
patience: 没有进步的训练轮数,在这之后训练就会被停止。

verbose: 详细信息模式。
mode: {auto, min, max} 其中之一。 在 min 模式中, 当被监测的数据停止下降,训练就会停止;在 max 模式中,当被监测的数据停止上升,训练就会停止;在 auto 模式中,方向会自动从被监测的数据的名字中判断出来。
baseline: 要监控的数量的基准值。 如果模型没有显示基准的改善,训练将停止。
restore_best_weights: 是否从具有监测数量的最佳值的时期恢复模型权重。 如果为 False,则使用在训练的最后一步获得的模型权重。

ModelCheckpoint

作用:在训练过程中的不同时间点保存模型当前的权重

当模型在指定的epochs(轮次)中不再改善,ModelCheckpoint结合EarlyStopping两者一起在训练的过程中不断的保存模型
参数含义:
filepath:string,保存模型文件的路径。
monitor:监控:要监控的数量。
verbose详细:详细模式,0或1。
save_best_only:如果save_best_only = True,则不会覆盖根据监控数量的最新最佳模型。
save_weights_only:如果为True,则只有模型的权重
保存(model.save_weights(filepath)),否则保存完整模型(model.save(filepath))。
mode:{auto,min,max}之一。 如果save_best_only =
True,则根据监控数量的最大化或最小化来决定覆盖当前保存文件。
对于val_acc,这应该是max,对于val_loss,这应该是min等。在自动模式下,从监控量的名称自动推断方向。
period:检查点之间的间隔(时期数)。

#首先我们先创建一个文件
#如下图logdir所示,该文件地址在你所写的项目中保存
logdir = os.path.join('callbacks')
#判断文件夹是否创建成功
if not os.path.exists(logdir):
    os.mkdir(logdir)#不存在就创建新的文件夹
#输出文件
output_model_file = os.path.join(logdir,"fashion_mnist_model.h5")
callbacks = [
    keras.callbacks.TensorBoard(logdir),#将logdir传入Tensorboard中
    keras.callbacks.ModelCheckpoint(output_model_file,#创建文件名
                                    save_best_only = True),#save—best-only 默认保存最好的模型
    keras.callbacks.EarlyStopping(patience = 5,min_delta=1e-3)
]
history = model.fit(x_train_scale,y_train,epochs=110,
          validation_data=(x_valid_scale,y_valid),
                    callbacks = callbacks)
                

然后在TensorBorad中就可以看到如下图像(其实在pycharm中就有这个图像的分析,但是能够看具体的值,之前看过李宏毅老使用了Matplotib单独弹出一个图像,但是对这个不太了解,所以还是选择tfb)
在这里插入图片描述
出现如下图像,是因为你在多次运行了你的那个项目之后就会这样
在这里插入图片描述
我是直接按ctrl+c先退出,然后找到文件将文件删除然后重新操作。

发布了21 篇原创文章 · 获赞 71 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_45056216/article/details/104457709