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

我正在尝试实现一种注意力机制,我需要细胞状态的完整序列(就像隐藏状态的完整序列一样)。然而,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 使层返回最终状态。

https://stackoverflow.com/questions/64009656/

相关文章:

python - 有没有办法在 python 中抓取没有 Selenium 的 JavaScript

python - 如何使用 python 编辑相机帧?

html - css的级联顺序

python - 如何在 Kotlin 中正确反转链表?

java - 如何将上下文传播到 Project Reactor 中的下游运算符?

postgresql - Cloud SQL (postgres) 外部数据包装器连接超时到副本实例

angular - 如何避免@types 包引入的补丁级别增加带来重大变化的问题?

linux - 是否可以为 `git clone` 操作指定超时?

firebase - 使用带有 Flutter Web App 的 http 包发布到 Cloud

javascript - 如何在 React Native 中更改原生 Picker fontSiz