我们上一章令卷积基全部不进行训练,在这一章我们锁定卷积基的一部分,训练另一部分,在这个过程中我们使用上一章我们训练好的全连接层部分
目录
1 导入库
2 读取模型
3 提取卷积基
4 组建新模型
5 添加数据集
6 编译模型
7 训练模型
8 预测模型
1 导入库
2 读取模型
我们看一下读取的模型
- 我们现在读取的模型之前训练的所有参数也同时读取了进来
3 提取卷积基
现在我们的整个模型都是可训练状态
然后我们提取出模型的卷积基础部分,之后可能会用到
我们看一下是否提取成功
我们现在仅仅想对最后三层做调整,所以我们设置除最后三层外的所有层为不可训练状态
我们现在再看一下卷积基的情况
我们只关注训练参数就可以了,发现比之前少了很多
4 组建新模型
我们首先创建一个新的模型对象,然后把修改过的卷积基加进来,之后再将训练好的模型中的全连接层加进来
我们看一下新模型的情况
5 添加数据集
与上一章添加数据集的代码相同,我们简单看一下
6 编译模型
此处我们由于要训练的参数非常多,所以我们减小学习速率,保证梯度下降
7 训练模型
首先我们定义之前训练的epochs数,之前我们训练了15个,之后我们定义这次要训练的epoch,我们这次训练10个,之后我们定义总的epoch数
- inital_epochs这个值只要不大于总epoch写多少都行,只是给我们看的这样一个数值,与前面真实训练了多少轮无关
然后我们model.fit这样写
我们这样写显示的训练轮数就从16开始了
我们看一下两条曲线
- acc
- loss
效果比前15次训练更加好,拟合程度逐渐提高
之后保存模型
8 预测模型
预测时就跟之前一样了,我们简单看一下