Keras的“可训练”范围

时间:2018-12-10 06:56:48

标签: python keras

我有两个Keras网络。为了便于说明,我的模型类似于GAN。因此,我们有一个鉴别器(D)和一个发生器(G)。 显然,为了训练(G),应该冻结(D)层。 如果我使用D.trainable = False冻结了它们,那么在训练(D)时应该反转此参数吗?

Keras中model.trainable的范围是什么? 我看过只更改一次该参数状态的代码: https://github.com/nairouz/Keras-GAN/blob/master/gan/gan.py

怎么可能呢?有什么解释吗?

1 个答案:

答案 0 :(得分:1)

来自How can I "freeze" Keras layers?

  

此外,您可以在实例化后将图层的可训练属性设置为TrueFalse。为使此方法生效,您需要在修改可训练属性后在模型上调用compile()

同样适用于模型。这意味着,当您设置D.trainable = False时,直到您编译D(或任何其他利用D的模型)后,该设置才会生效,因此不会影响您之前拥有的模型