【发布时间】:2020-09-22 12:24:01
【问题描述】:
我正在尝试实现一种注意力机制,其中我需要单元状态的完整序列(就像隐藏状态的完整序列一样)。 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)
【问题讨论】:
-
您正在实施哪种类型的关注?对于某些人来说,您只需要最后一个单元格状态。
-
我正在实施DA-RNN。等式 8 表明我需要每个时间步的每个细胞状态。
标签: python keras deep-learning lstm attention-model