python - 为什么 Keras 不返回 lstm 层中细胞状态的完整序列?

标签 python keras deep-learning lstm attention-model

我正在尝试实现一种注意力机制,我需要细胞状态的完整序列(就像隐藏状态的完整序列一样)。然而,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_sequencesTrue 以获取所有时间状态。您使用的标志 return_state=True 使层返回最终状态。

关于python - 为什么 Keras 不返回 lstm 层中细胞状态的完整序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64009656/

相关文章:

python - Python中两个比例之间差异的置信区间

python - 如何使用 Keras 使用批量输入进行训练,但使用 LSTM 使用单个示例进行预测?

keras - 如何在 ImageDataGenerator 中将 featurewise_center=True 与 flow_from_directory 一起使用?

python - 无法让子模块在另一个应用程序中正确导入

python - 我的时间序列图显示了错误的顺序

python - Mnist识别使用keras

python - keras:如何使用 model.train_on_batch() 的学习率衰减

machine-learning - 如何确定神经网络的层数和节点数

lua - 使用 torch7 演示进行线性回归

python - 如何从其他列字符串创建新列?