06_人脸识别实战(深度学习)- 回调函数

上一篇博客,我们学会如何训练模型,但是训练好的模型我们需要保存下来啊?一般有2种方式。
第一种,我们可以等模型训练完了,再调用保存模型的方法。但是一般不用等模型训练完,模型就能达到很高的精度,另外一方面,训练完的模型可能过拟合或者还不如训练过程中的精度高。所以;我们我们经常用第二种,在训练过程中,就不断的保存模型
这里就需要用到回调函数了callbacks

callbacks创建

还是直接上代码吧!

# 下面是创建callbacks 
    trained_models_path = "./trained_models/face_model"
    log_file_path = "./log.csv"
    early_stop = EarlyStopping('loss', 0.1, patience=60) # 当损失(loss)提升连续60次小于0.1时,就停止训练模型
    reduce_lr = ReduceLROnPlateau('loss', factor=0.1, patience=25, verbose=1) #当损失的训练轮次25后还没有进步,那么学习率就会降低
    csv_logger = CSVLogger(log_file_path, append=False) #保存日志,地址、日志不叠加
    model_names = trained_models_path + '.{epoch:02d} - {accuracy:2f}.hdf5'  #模型保存的名称
    model_checkpoint = ModelCheckpoint(model_names, #模型名称
                                       monitor='loss', #监听损失的变化
                                       verbose=1,
                                       save_best_only=True, #是否值保存最好的
                                       save_weights_only=False) #是否值保存权重(模型包括“权值”和“框架”)
    callbacks = [model_checkpoint, csv_logger, early_stop, reduce_lr]
  • early_stop:这个方法,可以提前停止训练模型
  • reduce_lr:当这个指标在训练轮次多少次后还没有进步,那么学习率就会降低
  • csv_logger:保存日志
  • model_checkpoint:持久化训练好的模型
callbacks使用

上面创建了callbacks,那怎么使用呢?
还记得博客的模型训练方法吗?最后我们调用的“model.fit”

model.fit(X_train,y_train,
                        steps_per_epoch=10,
                        epochs=num_epochs,
                        verbose=1,
                        validation_data=(X_test,y_test),
                        validation_steps=len(y_test) / batch_size)

我们修改成下面就好了

model.fit(X_train,y_train,
                        steps_per_epoch=10,
                        epochs=num_epochs,
                        verbose=1,
                        callbacks=callbacks,  # 对,就是加在这里
                        validation_data=(X_test,y_test),
                        validation_steps=len(y_test) / batch_size)

我们再次训练,就会发现,在每次训练完毕,就会产生很多模型文件(大概100兆以上)和日志,好吧,选一个精度最高的模型,修改名称为"best_face_recognition_model.hdf5",我们进行下一篇,模型识别图片中2个人脸是否为同一个人?

参考文献:keras保存模型

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值