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)
。