【问题标题】:How can I load a trained autoencoder (Keras), take the encoder part, and freeze it?如何加载经过训练的自动编码器 (Keras)、获取编码器部分并将其冻结?
【发布时间】:2019-10-12 12:38:18
【问题描述】:

我训练了一个自动编码器,现在想将编码器部分(包括权重)用于其他目的。我可以加载完整模型,获取编码器部分,然后在这些层中设置“可训练”参数吗?还是我需要重新编译适应的编码器架构(即所有层设置为不可训练),然后才加载权重?

【问题讨论】:

  • 哦,就是这么简单啊。很酷,我读到了一些关于在设置标志后需要编译的内容,所以我认为那是行不通的。模型摘要告诉我确实如此。谢谢!
  • 您需要代码(作为答案)吗?
  • 基本上只是这样做了:encoder.get_layer(index=1).trainable = False 贯穿相关层。似乎有效,摘要说没有更多可训练的参数(虽然没有尝试过训练)。
  • 这似乎是正确的。继续训练模型。
  • 回到这个问题,一切似乎都奏效了。谢谢!无法接受答案,因为这是评论。

标签: python-3.x machine-learning keras neural-network keras-layer


【解决方案1】:

您可以遍历层的模型列表(model.layers)并修改编码器的层,使trainable 标志为False

for layer in model.layers:
    layer.trainable = False

【讨论】:

    猜你喜欢
    • 2019-08-22
    • 2021-05-10
    • 2019-02-15
    • 2020-12-25
    • 2023-03-16
    • 2020-12-07
    • 2020-02-10
    • 2021-04-03
    • 2019-12-24
    相关资源
    最近更新 更多