在上一篇关于深度学习的推文中,我们介绍了使用Keras来实现机器学习中的线性回归和非线性回归算法。不过在那期的推文当中我们没有介绍如何保存我们的训练的模型和加载我们训练的模型,所以在本次的推文中我们将向大家介绍一下Keras中如何进行模型的保存、加载和接着训练。
一、Keras模型的保存
我们将使用手写字体识别的案例来进行说明。
我们先看一下之前的代码:
from
在Keras中,我们常用到的保存模型的方式有四种:
model
1.1 model.save()
这种方法是将Keras模型和权重保存在一个HDF5文件中,具体的方法:
save_path
我们只要在手写字体识别的代码最后加上上述代码即可。在上述的两行代码中我们设置了“mnist_test.h5”文件的保存路径,并且使用model.save()进行模型的保存。我们可以使用HDFView软件来打开这个保存的文件,如下所示。我们可以使用这个软件来查看模型中的dense和相应的权重信息:
当然了,除了这种方法以外,我们也可以使用代码来进行读取:
import
1.2 model.save_weights()
这种也是获取网络权重的方法,其使用方法如下:
model_save_path
by_name这个参数有两种情况,默认为False:
by_name=False 的时候按照网络的拓扑结构来进行加载权重的。
by_name=True 的时候就是按照网络层名称进行加载权重的。
1.3 model.to_json()
这种方法只保存了模型结构,没有包含其权重信息,其使用方法如下:
json_save
JSON中的字符内容如下所示:
1.4 model.to_yaml()
这种方法和model.to_json()一样,其用法如下:
yaml_save
上述方法中,最常用的还是model.save() 和model.save_weights()两种方式。
二、Keras模型的加载
模型的加载很简单,我们对不同的保存方式进行不同的加载即可:
2.1 model.save()方式模型的加载
from
2.2 model.save_weights()方式模型的加载
model_save_path
2.3 model.to_json()和model.to_yaml()方式模型的加载
from
我们来总结一下他们的区别:
三、Keras模型的继续训练
在实际的项目中,如果一个模型的训练时间很长(或者某种情况先要暂停),我们可以训练到某一个周期以后暂停模型的训练,等到需要的时候接着训练。那么这样的方案该怎么解决:
假设我们在模型的训练结尾使用
model.save(r'F:kerasdatasetmnist_test.h5')
保存模型的操作。
接下来我们来看怎么继续加载这个模型进行训练,我们只需load后进行fit:
# 载入模型
以上就是模型的加载和接着训练,下面如果要进行模型的评价和预测的话,可以参照手写字体识别的代码。