【问题标题】:Keras: change LSTM argument return_sequences=True after compileKeras:编译后更改 LSTM 参数 return_sequences=True
【发布时间】:2019-09-17 18:38:18
【问题描述】:

我想使用一个(2 层)预训练 LSTM 模型,并且我想在最后一个 Dense 层之前添加一个新的 LSTM 层。所以我要添加的层将是第三层。由于预训练模型的第二个 LSTM 已设置 return_sequences=True。我无法添加第三个 LSTM 层。如何使用 LSTM 更改任何层的预训练模型的配置以添加另一个 LSTM 层。我不热衷于制作另一个模型副本并复制权重。我想改变现有模型本身。

我正在尝试:

model.layers[-1].return_sequences=True

此语句不会产生任何错误。但是层配置还是显示return_sequences=False

我还尝试将层的配置显式更改为:

config=model.layers[-1].get_config()
config['layers']['config']['return_sequences']=True

这会改变字典配置中 return_sequences 的值。但我不知道如何更改图层。类似的东西不起作用。

model.layers[-1]=LSTM.from_config(config)

它让 init 至少需要两个参数。

模型的Layer[-1]实际上是一个双向包裹的LSTM。

【问题讨论】:

  • return_sequences = True唯一的方式来一个接一个地添加 LSTM。你确定这是你的问题吗?
  • 顺便说一句,在 Keras 中更改现有模型以在其间添加一层比构建具有两层的新模型更难。
  • 我想将预训练模型的 return_sequences=False 设置为 True 而不构建另一个副本。

标签: keras lstm keras-layer


【解决方案1】:

我认为制作另一个模型副本并复制权重是您最好的选择。如果您研究源代码,您可能能够找到破解另一层的方法,但这需要付出努力,可能无法正常工作,并且将来可能会崩溃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2023-01-03
    • 2020-09-23
    • 2017-12-29
    • 1970-01-01
    相关资源
    最近更新 更多