在keras LSTM的文档中有两个参数
- return_sequences: Boolean. 是否返回最后一个输出或是整个序列的输出,默认是False
- return_state: Boolean. 是否在输出之外返回状态,默认是False
输出指的是a<t>,状态指的是c<t>,默认的情况下lstm返回最后一个timestep的输出,不返回状态。
对于这两个参数的不同组合:
1.return_sequences=False && return_state=False
h = LSTM(6)
此时返回的对输入数据进行计算得到的a,如果X有多个timestep,则返回最后一个timestep的a
2.return_sequences=True && return_state=False
LSTM(6, return_sequences=True)
此时返回的是全部timestep的a
3.return_sequences=False && return_state=True
lstm1, state_h, state_c = LSTM(6, return_state=True)
lstm1, state_h是最后一个timestep的a,state_c是最后一个timestep的c
4.return_sequences=True && return_state=True
lstm1, state_h, state_c = LSTM(6, return_sequences=True, return_state=True)
lstm1是全部timestep的a,
state_h是最后一个timestep的a,
state_c是最后一个timestep的c
同样道理,GRU的输出也是这样的
参考: