我想在Keras中冻结一个预先训练的网络。我在文档中找到了base.trainable = False
。但是我不明白它是如何工作的。
通过len(model.trainable_weights)
,我发现自己有30个可训练的砝码。这个怎么可能?网络显示可训练的参数总数:16,812,353。
冻结后,我有4个可训练的砝码。
也许我不明白参数和权重之间的区别。不幸的是,我是深度学习的初学者。也许有人可以帮助我。
答案 0 :(得分:2)
Keras Model
是trainable by default-您有两种冻结所有重量的方法:
model.trainable = False
之前编译模型for layer in model.layers: layer.trainable = False
-编译前后均可(1)必须在编译之前完成,因为Keras在编译时会将model.trainable
作为布尔标志,并在后台执行(2)。完成以上任一操作后,您应该看到:
print(model.trainable_weights)
# []
关于文档,可能已经过时-请参见上面的链接源代码,最新。