当我们在训练一个大型数据集时候,如果短时间不能训练完,突然的断电等意外情况会使我们的训练工作全部半途而废,那么养成实时保存模型的习惯则相当必要,这样每次训练我们可以接着上次运行的模型继续运行,节省不必要的时间花费。

思想

训练开始时候加入判断语句,判断是否有已经存在的保存模型文件:如果有则直接载入模型即可;如果没有则是第一次训练,载入你的模型架构。

训练完成时候,给一个保存路径,加入一句save语句即完成了模型的保存。

主要代码如下:

from keras.models import load_model
import os

\"\"\"数据预处理\"\"\"

weight_file=\'./savemodel/model.h5\'#保存/加载地址

if os.path.exists(weight_file):
    model=load_model(weight_file) #载入已保存的模型文件
    print(\'model has restored...\')
else:
    print(\'this is the first time to train...\')
    #创建你的模型框架
    model = resnet.ResnetBuilder.build_resnet_34((img_channels, img_rows, img_cols), nb_classes) 
    model.compile(loss=\'categorical_crossentropy\',
                  optimizer=\'adam\',
                  metrics=[\'accuracy\'])

\"\"\"fit数据,训练模型\"\"\"

model.save(weight_file) # 保存训练好的模型

示例

使用resnet18网络训练cifar10的例子,完整代码可以下载:https://github.com/Briwisdom/resnet_cifar10

如下图,模型可以接着上次训练的结果继续训练……

\"\"

 

收藏 打印