pytorch之LSTM


from:http://pytorch-cn.readthedocs.io/zh/latest/package_references/torch-nn/#recurrent-layers

class torch.nn.LSTM( args, * kwargs)[source]

將一個多層的 (LSTM) 應用到輸入序列。

對輸入序列的每個元素,LSTM的每層都會執行以下計算: $$ \begin{aligned} i_t &= sigmoid(W_{ii}x_t+b_{ii}+W_{hi}h_{t-1}+b_{hi}) \ f_t &= sigmoid(W_{if}x_t+b_{if}+W_{hf}h_{t-1}+b_{hf}) \ o_t &= sigmoid(W_{io}x_t+b_{io}+W_{ho}h_{t-1}+b_{ho})\ g_t &= tanh(W_{ig}x_t+b_{ig}+W_{hg}h_{t-1}+b_{hg})\ c_t &= f_tc_{t-1}+i_tg_t\ h_t &= o_t*tanh(c_t) \end{aligned} $$ $h_t$是時刻$t$的隱狀態,$c_t$是時刻$t$的細胞狀態,$x_t$是上一層的在時刻$t$的隱狀態或者是第一層在時刻$t$的輸入。$i_t, f_t, g_t, o_t$ 分別代表 輸入門,遺忘門,細胞和輸出門。

參數說明:

  • input_size – 輸入的特征維度

  • hidden_size – 隱狀態的特征維度

  • num_layers – 層數(和時序展開要區分開)

  • bias – 如果為False,那么LSTM將不會使用$b_{ih},b_{hh}$,默認為True

  • batch_first – 如果為True,那么輸入和輸出Tensor的形狀為(batch, seq, feature)

  • dropout – 如果非零的話,將會在RNN的輸出上加個dropout,最后一層除外。

  • bidirectional – 如果為True,將會變成一個雙向RNN,默認為False

LSTM輸入: input, (h_0, c_0)

  • input (seq_len, batch, input_size): 包含輸入序列特征的Tensor。也可以是packed variable ,詳見 [pack_padded_sequence](#torch.nn.utils.rnn.pack_padded_sequence(input, lengths, batch_first=False[source])

  • h_0 (num_layers * num_directions, batch, hidden_size):保存着batch中每個元素的初始化隱狀態的Tensor

  • c_0 (num_layers * num_directions, batch, hidden_size): 保存着batch中每個元素的初始化細胞狀態的Tensor

LSTM輸出 output, (h_n, c_n)

  • output (seq_len, batch, hidden_size * num_directions): 保存RNN最后一層的輸出的Tensor。 如果輸入是torch.nn.utils.rnn.PackedSequence,那么輸出也是torch.nn.utils.rnn.PackedSequence

  • h_n (num_layers * num_directions, batch, hidden_size): Tensor,保存着RNN最后一個時間步的隱狀態。

  • c_n (num_layers * num_directions, batch, hidden_size): Tensor,保存着RNN最后一個時間步的細胞狀態。

LSTM模型參數:

  • weight_ih_l[k] – 第k層可學習的input-hidden權重($W_{ii}|W_{if}|W_{ig}|W_{io}$),形狀為(input_size x 4*hidden_size)

  • weight_hh_l[k] – 第k層可學習的hidden-hidden權重($W_{hi}|W_{hf}|W_{hg}|W_{ho}$),形狀為(hidden_size x 4*hidden_size)

  • bias_ih_l[k] – 第k層可學習的input-hidden偏置($b_{ii}|b_{if}|b_{ig}|b_{io}$),形狀為( 4*hidden_size)

  • bias_hh_l[k] – 第k層可學習的hidden-hidden偏置($b_{hi}|b_{hf}|b_{hg}|b_{ho}$),形狀為( 4*hidden_size)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM