快捷鍵

LSTMCell

class torch.nn.LSTMCell(input_size, hidden_size, bias=True, device=None, dtype=None)[source][source]

一個長短期記憶 (LSTM) 單元。

i=σ(Wiix+bii+Whih+bhi)f=σ(Wifx+bif+Whfh+bhf)g=tanh(Wigx+big+Whgh+bhg)o=σ(Wiox+bio+Whoh+bho)c=fc+igh=otanh(c)\begin{array}{ll} i = \sigma(W_{ii} x + b_{ii} + W_{hi} h + b_{hi}) \\ f = \sigma(W_{if} x + b_{if} + W_{hf} h + b_{hf}) \\ g = \tanh(W_{ig} x + b_{ig} + W_{hg} h + b_{hg}) \\ o = \sigma(W_{io} x + b_{io} + W_{ho} h + b_{ho}) \\ c' = f \odot c + i \odot g \\ h' = o \odot \tanh(c') \\ \end{array}

其中 σ\sigma 是 sigmoid 函數,而 \odot 是 Hadamard 乘積。

參數
  • input_size (int) – 輸入 x 中預期特徵的數量

  • hidden_size (int) – 隱藏狀態 h 中的特徵數量

  • bias (bool) – 如果 False,則該層不使用偏差權重 b_ihb_hh。預設值:True

輸入:input, (h_0, c_0)
  • 形狀為 (batch, input_size)(input_size)input:包含輸入特徵的張量

  • 形狀為 (batch, hidden_size)(hidden_size)h_0:包含初始隱藏狀態的張量

  • 形狀為 (batch, hidden_size)(hidden_size)c_0:包含初始記憶單元狀態的張量

    如果未提供 (h_0, c_0),則 h_0c_0 預設為零。

輸出:(h_1, c_1)
  • 形狀為 (batch, hidden_size)(hidden_size)h_1:包含下一個隱藏狀態的張量

  • 形狀為 (batch, hidden_size)(hidden_size)c_1:包含下一個記憶單元狀態的張量

變數
  • weight_ih (torch.Tensor) – 可學習的輸入到隱藏層的權重,形狀為 (4*hidden_size, input_size)

  • weight_hh (torch.Tensor) – 可學習的隱藏層到隱藏層的權重,形狀為 (4*hidden_size, hidden_size)

  • bias_ih – 可學習的輸入到隱藏層的偏差,形狀為 (4*hidden_size)

  • bias_hh – 可學習的隱藏層到隱藏層的偏差,形狀為 (4*hidden_size)

注意

所有權重和偏差都從 U(k,k)\mathcal{U}(-\sqrt{k}, \sqrt{k}) 初始化的,其中 k=1hidden_sizek = \frac{1}{\text{hidden\_size}}

在某些 ROCm 裝置上,當使用 float16 輸入時,此模組將使用 不同的精度 進行反向傳播。

範例

>>> rnn = nn.LSTMCell(10, 20)  # (input_size, hidden_size)
>>> input = torch.randn(2, 3, 10)  # (time_steps, batch, input_size)
>>> hx = torch.randn(3, 20)  # (batch, hidden_size)
>>> cx = torch.randn(3, 20)
>>> output = []
>>> for i in range(input.size()[0]):
...     hx, cx = rnn(input[i], (hx, cx))
...     output.append(hx)
>>> output = torch.stack(output, dim=0)

文件

取得 PyTorch 的完整開發者文件

檢視文件

教學

取得初學者和高級開發人員的深入教學

檢視教學

資源

尋找開發資源並獲得您的問題解答

檢視資源