Keras中的“ model.trainable = False”是什么意思?

时间:2019-10-03 18:18:36

标签: python keras deep-learning

我想在Keras中冻结一个预先训练的网络。我在文档中找到了base.trainable = False。但是我不明白它是如何工作的。 通过len(model.trainable_weights),我发现自己有30个可训练的砝码。这个怎么可能?网络显示可训练的参数总数:16,812,353。 冻结后,我有4个可训练的砝码。 也许我不明白参数和权重之间的区别。不幸的是,我是深度学习的初学者。也许有人可以帮助我。

1 个答案:

答案 0 :(得分:2)

Keras Modeltrainable by default-您有两种冻结所有重量的方法:

  1. model.trainable = False 之前编译模型
  2. for layer in model.layers: layer.trainable = False-编译前后均可

(1)必须在编译之前完成,因为Keras在编译时会将model.trainable作为布尔标志,并在后台执行(2)。完成以上任一操作后,您应该看到:

print(model.trainable_weights)
# [] 

关于文档,可能已经过时-请参见上面的链接源代码,最新。