【发布时间】:2018-01-20 10:13:43
【问题描述】:
我想使用Yang et al. 的注意力机制实现。我找到了一个使用这种注意力机制here 的自定义层的工作实现。而不是使用我的 LSTM 的输出值:
my_lstm = LSTM(128, input_shape=(a, b), return_sequences=True)
my_lstm = AttentionWithContext()(my_lstm)
out = Dense(2, activation='softmax')(my_lstm)
我想使用 LSTM 的隐藏状态:
my_lstm = LSTM(128, input_shape=(a, b), return_state=True)
my_lstm = AttentionWithContext()(my_lstm)
out = Dense(2, activation='softmax')(my_lstm)
但我得到了错误:
TypeError:只能将元组(不是“int”)连接到元组
我尝试将它与 return_sequences 结合使用,但到目前为止我尝试过的一切都失败了。如何修改返回的张量以便像返回的输出序列一样使用它?
谢谢!
【问题讨论】:
-
return_state=True只返回最后一个隐藏状态,而不是所有隐藏状态。因此,即使您编辑了 AttentionWithContext 以使用return_state=True时获得的张量列表,我认为这不会是您想要的。 -
@NicoleWhite 好的,那会是个问题。我看不出它只返回最后一个隐藏状态的原因,但就这样吧。不过我不得不怀疑:在大多数论文中,他们都在谈论隐藏状态。这真的是他们的意思还是他们只是使用了错误的术语?我没有看到使用隐藏状态而不是输出状态的理由,但我想正确使用他们的方法。
-
你说的输出状态指的是什么?
-
@NicoleWhite 我使用来自here 的术语来表示传统的 LSTM。在这种情况下,我们有细胞状态向量和输出向量。我会称细胞状态向量为隐藏状态,但我不确定。
标签: python neural-network deep-learning keras lstm