我正在尝试实现一种注意力机制,我需要细胞状态的完整序列(就像隐藏状态的完整序列一样)。然而,Keras LSTM
仅返回最后一个单元格状态:
output, state_h, state_c = layers.LSTM(units=45, return_state=True, return_sequences=True)
state_c
的形状为 (batch size, 1, 45)
,其中输出(全序列隐藏状态)的形状为 (batch size, 5, 45)
。 5为时间窗长度
为什么 Keras 不返回完整的序列细胞状态?有没有比下面的方法更好的方法来获取细胞状态的完整序列?
full_hidden, full_cell, outputs = [], [], []
state = None
input = layers.Input(shape=(time_window,features), dtype='float32')
output = layers.LSTM(units=45, return_state=True)
for i in range(time_window):
input_t = input[:, i, :]
input_t = tf.expand_dims(input_t, 1)
out, state_h, state_c = lstm(input_t, initial_state=state)
state = state_h, state_c
full_hidden.append(state_h)
full_cell.append(state_c)
outputs.append(out)
最佳答案
你需要设置标志return_sequences
为 True
以获取所有时间状态。您使用的标志 return_state=True
使层返回最终状态。
关于python - 为什么 Keras 不返回 lstm 层中细胞状态的完整序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64009656/