今天才注意到LSTM的output和hidden_state是同一个东西!下面分情况讨论参数的设置问题。
h = LSTM(X)
Keras API 中,return_sequences和return_state默认就是false。此时只会返回最后一个LSTM的hidden state 值。
输出全部时间步LSTM的hidden state结果。
lstm1, state_h, state_c = LSTM(1, return_state=True)
stm1 和 state_h 结果都是 hidden state。在这种参数设定下,它们俩的值相同。都是最后一个时间步的 hidden state。 state_c 是最后一个时间步 cell state结果。
lstm1, state_h, state_c = LSTM(1, return_sequences=True, return_state=True)
此时,我们既要输出全部时间步的 hidden state ,又要输出 cell state。lstm1 存放的就是全部时间步的 hidden state。state_h 存放的是最后一个时间步的 hidden state,state_c 存放的是最后一个时间步的 cell state 举一个输出例子,假设我们输入的时间步 time step=3:
[array([[[-0.02145359],
[-0.0540871 ],
[-0.09228823]]], dtype=float32),
array([[-0.09228823]], dtype=float32),
array([[-0.19803026]], dtype=float32)]
可以看到state_h 的值和lstm1的最后一个时间步的值相同。