我希望在Keras中冻结一个预训练的网络。我在文档中找到了
base.trainable = False
,但我不明白它是如何工作的。通过使用len(model.trainable_weights)
,我发现我有30个可训练的权重。这怎么可能呢?该网络显示总共可训练参数:16,812,353。在冻结之后,我只剩下4个可训练的权重。也许我不理解参数和权重之间的区别。不幸的是,我是深度学习的初学者。或许有人可以帮帮我。
Model
在其layers
中包含嵌套的Model
,那么我认为选项(2)中的代码实际上会导致这些嵌套模型的选项(1)行为,对吗?在这种情况下,最好有一个函数set_trainable
,它通过递归迭代layers
,设置层的trainable
并再次调用自身以处理嵌套模型。 - Kilian Batznerif isinstance(layer, Model): set_trainable(layer)
。 - OverLordGoldDragon