Loading

LSTM及GRU整理。

  • LSTM

\[I_t=\sigma(X_tW_{xi}+H_{t-1}W_{hi}+b_i)\\ F_t=\sigma(X_tW_{xf}+H_{t-1}W_{hf}+b_f)\\ O_t=\sigma(X_tW_{xo}+H_{t-1}W_{ho}+b_o)\\ \bar{C_t}=tanh(X_tW_{xc}+H_{t-1}W_{hc}+b_c)\\ C_t=F_t\odot{C_{t-1}}+I_t\odot{\bar{C_t}}\\ H_t=O_t\odot{tanh(C_t)} \]

"""
Kears LSTM API 中给出的两个参数描述

return_sequences:默认 False。在输出序列中,返回单个 hidden state值还是返回全部time step 的 hidden state值。 False 返回单个, true 返回全部。
return_state:默认 False。是否返回除输出之外的最后一个状态。

1.return_sequences=False && return_state=False
h = LSTM(X)
Keras API 中,return_sequences和return_state默认就是false。此时只会返回一个hidden state 值。如果input 数据包含多个时间步,则这个hidden state 是最后一个时间步的结果

2.return_sequences=True && return_state=False
h = LSTM(X)
输出的hidden state 包含全部时间步的结果。

3.return_sequences=False && return_state=True
lstm1, state_h, state_c = LSTM(1, return_state=True)
lstm1 和 state_h 结果都是 hidden state。在这种参数设定下,它们俩的值相同。都是最后一个时间步的 hidden state。 state_c 是最后一个时间步 cell state结果。

4.return_sequences=True && return_state=True
lstm1, state_h, state_c = LSTM(1, return_sequences=True, return_state=True)
lstm1 存放的就是全部时间步的 hidden state,state_h 存放的是最后一个时间步的 hidden state,state_c 存放的是最后一个时间步的 cell state
"""

  • GRU

\[R_t=\sigma(X_tW_{xr}+H_{t-1}W_{hr}+b_r)\\ Z_t=\sigma(X_tW_{xz}+H_{t-1}W_{hz}+b_z)\\ \bar{H_{t}}=tanh(X_tW_{xh}+(R_t\odot{H_{t-1}})W_{hh}+b_h)\\ H_t=Z_t\odot{H_{t-1}}+(1-Z_t)\odot{\bar{H_t}} \]

posted @ 2023-12-11 15:12  lotuslaw  阅读(27)  评论(0)    收藏  举报