小编Dan*_*tny的帖子

在使用张量流学习时逐渐解冻神经网络层的正确方法是什么?

我将转移学习与 effectivenet_B0 结合使用,我想做的是在网络学习时逐渐解冻层。首先,我在整个网络之上训练 1 个密集层,而其他所有层都被冻结。我使用此代码来冻结图层:

for layer in model_base.layers[:-2]:
  layer.trainable = False
Run Code Online (Sandbox Code Playgroud)

然后我使用以下代码解冻整个模型并冻结我需要的确切层:

model.trainable = True
for layer in model_base.layers[:-13]:
  layer.trainable = False
Run Code Online (Sandbox Code Playgroud)

一切正常。我再进行一次 model.compile,它就开始从原来的地方开始训练,太棒了。但是,当我再次解冻所有层时

model.trainable = True
Run Code Online (Sandbox Code Playgroud)

并尝试进行微调,我的模型从头开始学习。

我尝试了不同的方法和方法来解决这个问题,但似乎没有任何效果。我也尝试对模型中的所有batch_normalization层使用layer.training = False和,但它也没有帮助。layer.trainable = False

python neural-network deep-learning keras tensorflow

5
推荐指数
2
解决办法
5585
查看次数