Keras:change LSTM参数在编译后返回_sequences=True

Keras:change LSTM参数在编译后返回_sequences=True,keras,lstm,keras-layer,Keras,Lstm,Keras Layer,我想使用一个(2层)预训练的LSTM模型,我想在最后一个密集层之前添加一个新的LSTM层。因此,我将添加的层将是第三层。由于预训练模型的第二个LSTM已将return_sequences设置为True。我无法添加第三个LSTM层。如何使用LSTM更改任何预训练模型层的配置,以添加另一个LSTM层。我不喜欢复制另一个模型和复制重量。我想改变现有模型本身 我试着这样做: model.layers[-1].return_sequences=True 此语句不会生成任何错误。但是图层配置仍然显示ret

我想使用一个(2层)预训练的LSTM模型,我想在最后一个密集层之前添加一个新的LSTM层。因此,我将添加的层将是第三层。由于预训练模型的第二个LSTM已将return_sequences设置为True。我无法添加第三个LSTM层。如何使用LSTM更改任何预训练模型层的配置,以添加另一个LSTM层。我不喜欢复制另一个模型和复制重量。我想改变现有模型本身

我试着这样做:

model.layers[-1].return_sequences=True
此语句不会生成任何错误。但是图层配置仍然显示return\u sequences=False

我还尝试将图层的配置明确更改为:

config=model.layers[-1].get_config()
config['layers']['config']['return_sequences']=True
这将更改字典配置中返回\u序列的值。但我不知道如何改变图层。像这样的东西不起作用

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

它让init至少接受两个参数


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

我认为制作另一个模型副本并复制权重是最好的选择。如果你研究源代码,你可能会想出一种方法来破解另一层,但这需要付出努力,可能不起作用,将来可能会崩溃。

我认为制作另一个模型副本并复制权重是你最好的选择。如果您研究源代码,您可能会找到一种方法来破解另一层,但这需要付出努力,可能不起作用,将来可能会中断。

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