今天才注意到 LSTM 的 output 和 hidden_state 是同一个东西!下面分情况讨论参数的设置问题。
return_sequences=False && return_state=False
1 | h = LSTM(X) |
Keras API 中,return_sequences 和 return_state 默认就是 false。此时只会返回最后一个 LSTM 的 hidden state 值。
return_sequences=True && return_state=False
输出全部时间步 LSTM 的 hidden state 结果。
return_sequences=False && return_state=True
1 | lstm1, state_h, state_c = LSTM(1, return_state=True) |
stm1 和 state_h 结果都是 hidden state。在这种参数设定下,它们俩的值相同。都是最后一个时间步的 hidden state。 state_c 是最后一个时间步 cell state 结果。
return_sequences=True && return_state=True
1 | 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:
1 | [array([[[-0.02145359], |
可以看到state_h 的值和lstm1的最后一个时间步的值相同。