Keras层解冻导致训练过程从头开始

时间:2018-04-26 07:10:37

标签: python deep-learning keras keras-layer

我训练了一个模型,其中有几层而不是模型中的每一层。

layer.trainable = False

我在这个模型中添加了几个图层,名为

model.compile(...)

并为几个时期训练了这个新模型,其中部分层被冻结。

后来我决定解冻图层并运行

for layer in model.layers:
   layer.trainable = True
model.compile(...)

当我开始学习具有未冻结层的模型时,即使我只想继续从先前学过的权重进行训练,我也会获得非常高的损失函数值。我还检查了model.compile(...)模型仍能很好地预测(不重置以前学过的权重),但是一旦学习过程开始,所有内容都会被删除'我从零开始。

有人可以澄清,这种行为是否正常?如何重新编译模型而不是从头开始?

P.S。我还要求使用layer.get_weights()layer.set_weights()

手动保存权重并将其分配回新编译的模型

我使用了相同的编译参数(类似optimizer和类似的loss

1 个答案:

答案 0 :(得分:0)

在开始微调训练过的图层时,您可能需要降低学习率。例如,学习率0.01可能适用于新的密集图层(顶部),其他所有图层都设置为无法处理。但是,当将所有图层设置为可训练时,您可能需要将学习率降低到0.001,无需手动复制或设置权重。