参考 此处
最近新down了一个源码,写的非常“精彩”,我之前的想法 他都用代码复现了,idea被复现 悔我不会写代码。。。但是想到一个新模型想在他的基础上训练看看结果,于是就掉入了 keras的坑。 下面一起来看看如何冻结前面的已训练好的层,只训练后面的模型吧。
看到 有方法说
- 通过trainable(布尔值)对特定层进行构造,使某一层不可被训练:
frozen_layer = Dense(32, trainable=False)
那是否是 把不需要训练的层都加上 trainable=False ,直接load 进之前的model权重 就可以训练我新加的层了??(好像想得太简单 caffe 是这样。。)
看官网
1 load进VGG16的卷积权重
2 添加我们先前定义的完全连接模型,并加载其权重 (这里很奇怪 自己新定义的层 没有权重咋办)
3 冻结VGG16模型的层到最后一个卷积块
注:1 为了执行微调,所有层都应该以经过适当训练的权重开始:例如,您不应该将随机初始化的完全连接网络置于经过