Keras ModelCheckpoint 保存训练过程中的最佳模型权重

我们在训练模型的时候,一般会选择记录训练模型的权值文件或者只保存训练过程中的最优模型的权重文件。这里介绍训练过程中保存最优模型的权重文件的方法。下面是简单写了一个适用vgg16模型训练cifar10的程序,最终最优的模型权重文件会被保存在logs文件夹下。

# -*- coding: utf-8 -*-
"""
使用VGG网络训练cifar-10,保存训练过程权重

@author: Administrator
"""
from sklearn.preprocessing import LabelBinarizer
from keras.applications.vgg16 import VGG16
from keras.callbacks import ModelCheckpoint, TensorBoard
from keras.optimizers import SGD
from keras.datasets import cifar10
#import argparse

# =============================================================================
# # construct the argument parse and parse the arguments
# ap = argparse.ArgumentParser()
# ap.add_argument("-w", "--weights", required=True,
#                 help="path to weights directory")
# args = vars(ap.parse_args())
# =============================================================================

#导入数据
print("loading cifar-10 data ....")
((trainX, trainY),(testX, testY)) = cifar10.load_data()
trainX = trainX.astype("float") / 255.0
testX = testX.astype("float") / 255.0

#将label转化为vectors
lb = LabelBinarizer()
trainY = lb.fit_transform(trainY)
testY = lb.transform(testY)

#初始化模型和参数

print("compiling model .....")

opt = SGD(lr=0.01, decay=0.1/40, momentum=0.9, nesterov=True)
model = VGG16.build(width=32, height=32, depth=3, classes=10)
model.compile(loss="categorical_crossentropy", optimizer=opt,
              metrics=["accuracy"])

#创建一个权重文件保存文件夹logs
log_dir = "logs/"
#记录所有训练过程,每隔一定步数记录最大值
tensorboard = TensorBoard(log_dir=log_dir)
checkpoint = ModelCheckpoint(log_dir + "best_weights.h5",
                                 monitor="val_loss",
                                 mode='min',
                                 save_weights_only=True,
                                 save_best_only=True, 
                                 verbose=1,
                                 period=1)

callback_lists=[tensorboard,checkpoint]


print("training network...")
H = model.fit(trainX, trainY, validation_data=(testX, testY),
              batch_size=64, epochs=40, callbacks=callback_lists, verbose=2)

 回调函数 Callbacks 是一组在训练的特定阶段被调用的函数集,可以使用回调函数来观察训练过程中网络内部的状态和统计信息。然后,在模型上调用 fit() 函数时,可以将ModelCheckpoint传递给训练过程。训练深度学习模型时,Checkpoint是模型的权重。ModelCheckpoint回调类允许你定义检查模型权重的位置,文件应如何命名,以及在什么情况下创建模型的Checkpoint。函数如下:

checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=0, save_best_only=True, mode='max', period=1)

参考

1、https://www.jianshu.com/p/0711f9e54dd2

2、https://cloud.tencent.com/developer/article/1049579

  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值