【发布时间】:2018-04-26 07:10:36
【问题描述】:
我训练了一个具有多个层的模型,而不是 model.layers 集中的每一层
layer.trainable = False
我在这个模型中添加了几个层,称为
model.compile(...)
并在部分层冻结的情况下将这个新模型训练了几个 epoch。
后来我决定解冻图层并运行
for layer in model.layers:
layer.trainable = True
model.compile(...)
当我开始学习具有未冻结层的模型时,我得到的损失函数值非常高,即使我只是想从以前学习的权重继续训练。我还检查了在model.compile(...) 模型之后仍然可以很好地预测(不重置以前学习的权重),但是一旦学习过程开始,一切都会被“擦除”,我从头开始。
有人可以澄清一下,这种行为是否可以?如何重新编译模型而不是从头开始?
附:我还要求手动保存权重并使用layer.get_weights() 和layer.set_weights() 将它们分配回新编译的模型
我使用了相同的编译参数(类似optimizer和类似loss)
【问题讨论】:
标签: python deep-learning keras keras-layer