【问题标题】:How to freeze specific layers of a model inside a model?如何冻结模型中模型的特定层?
【发布时间】:2019-03-20 19:23:55
【问题描述】:

我的 keras 模型由多个模型组成。每个“子模型”都有多个层。如何调出“子模型”中的层并设置可训练性/冻结特定层?

【问题讨论】:

  • 嗨,欢迎来到 StackOverflow。如果您举例说明您想要实现的目标以及您迄今为止尝试过的目标,您可能会更快地获得帮助。可能还需要澄清“子模型”和“设置可训练性”的含义。

标签: python keras keras-layer


【解决方案1】:

我将使用 Keras 中的 VGG19 卷积神经网络示例,尽管它适用于任何神经网络架构:

from keras.applications.vgg19 import VGG19 

model = VGG19(weights='imagenet')

您可以使用以下方法可视化图层:

model.summary()

摘要将显示网络中可训练参数的数量。冻结某些层,即网络中的最后 5 层:

for layer in model.layers[:-5]:
    layer.trainable = False

再次调用摘要,您会看到可训练参数的数量减少了。

【讨论】:

  • 这是针对单个模型而不是嵌套子模型。但是,我发现“子模型”是可调用的,所以我找到了一个解决方案,将子模型层称为 model.layers[5].layers,其中模型的第 5 层是子模型。
  • 是的,我回答时想知道您对子模型的定义,因为深度神经网络的各个层都可以被视为子模型。但我很高兴你把它整理好了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-18
  • 1970-01-01
  • 2019-07-31
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多