【keras】callbacks的简单使用

常用的callbacks函数有EarlyStopping(提前停止训练) ModelCheckpoint(保存最优模型)CSVLogger (保存训练过程的精度、loss等)ReduceLROnPlateau(当模型性能无法进一步提升时降低学习率),以下为一个简单的例子

from sklearn.datasets import make_blobs
from keras.layers import Dense, Input
from keras import Model
from keras import callbacks

# 定义一个简单的MLP
def MLP(hidden=50):
    inputs = Input(shape=(2,))
    x = Dense(units=hidden, activation='relu')(inputs)
    out = Dense(units=3, activation='softmax')(x)
    model = Model(inputs, out)
    model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
    return model

定义回调函数列表

callbacks_list = [
	# 监视变量monitor在patience个epoch间差值都小于阈值min_delta时停止训练,
    # mode即该变量的类型,loss是min 越小越好,max越大越好 例如 精度
    callbacks.EarlyStopping(
        monitor='val_loss',
        min_delta=0.000001,
        patience=2,
        verbose=1,
        mode='min'
    ),
    # 保存训练过程中的最优模型,filepath保存路径
    # monitor监视变量,保存训练过程中该值最优的模型,
    # save_weights_only  False相当于model.save()保存整个模型结构和权重 True 只保存权重
    # save_best_only  是否覆盖当前最好的模型
    callbacks.ModelCheckpoint(
        filepath='log/mymodel.h5',
        monitor='val_loss',
        save_weights_only=False,
        mode='min',
        save_best_only=True
    ),
    # 将训练过程的精度loss等写入文件中,append 当文件存在时 是否在尾部添加或是覆盖
    callbacks.CSVLogger(
        filename='log/train.csv',
        append=True
    ),
    # 降低学习率,当监视变量在patience个epoch中都没有改善(根据min_delta阈值判断)时就降低学习率,
    # lr = lr*factor,此处即减10倍,min_lr 学习率下限
    callbacks.ReduceLROnPlateau(
        monitor='val_loss',
        factor=0.1, # lr*factor
        patience=10
        mode='min',
        min_delta=1e-4,
        min_lr = 0
    )
]

运行代码,在log下保存了最优模型和训练过程loss acc等变化
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值