基於pytorch的lstm引數使用詳解
lstm(*input,**kwargs)
將多層長短時記憶(LSTM)神經網路應用於輸入序列。
引數:
input_size:輸入'x'中預期特性的數量
hidden_size:隱藏狀態'h'中的特性數量
num_layers:迴圈層的數量。例如,設定' ' num_layers=2 ' '意味著將兩個LSTM堆疊在一起,形成一個'堆疊的LSTM ',第二個LSTM接收第一個LSTM的輸出並計算最終結果。預設值:1
bias:如果' False',則該層不使用偏置權重' b_ih '和' b_hh '。預設值:'True'
batch_first:如果' 'True ' ',則輸入和輸出張量作為(batch,seq,feature)提供。預設值: 'False'
dropout:如果非零,則在除最後一層外的每個LSTM層的輸出上引入一個“dropout”層,相當於:attr:'dropout'。預設值:0
bidirectional:如果‘True',則成為雙向LSTM。預設值:'False'
輸入:input,(h_0,c_0)
**input**of shape (seq_len,batch,input_size):包含輸入序列特徵的張量。輸入也可以是一個壓縮的可變長度序列。
see:func:'torch.nn.utils.rnn.pack_padded_sequence' 或:func:'torch.nn.utils.rnn.pack_sequence' 的細節。
**h_0** of shape (num_layers * num_directions,hidden_size):張量包含批處理中每個元素的初始隱藏狀態。
如果RNN是雙向的,num_directions應該是2,否則應該是1。
**c_0** of shape (num_layers * num_directions,hidden_size):張量包含批處理中每個元素的初始單元格狀態。
如果沒有提供' (h_0,c_0) ',則**h_0**和**c_0**都預設為零。
輸出:output,(h_n,c_n)
**output**of shape (seq_len,num_directions * hidden_size) :包含LSTM最後一層輸出特徵' (h_t) '張量,
對於每個t. If a:class: 'torch.nn.utils.rnn.PackedSequence' 已經給出,輸出也將是一個打包序列。
對於未打包的情況,可以使用'output.view(seq_len,num_directions,hidden_size)',正向和反向分別為方向' 0 '和' 1 '。
同樣,在包裝的情況下,方向可以分開。
**h_n** of shape (num_layers * num_directions,hidden_size):包含' t = seq_len '隱藏狀態的張量。
與*output*類似, the layers可以使用以下命令分隔
h_n.view(num_layers,hidden_size) 對於'c_n'相似
**c_n** (num_layers * num_directions,hidden_size):張量包含' t = seq_len '的單元狀態
所有的權重和偏差都初始化自: where:
include:: cudnn_persistent_rnn.rst
import torch import torch.nn as nn # 雙向rnn例子 # rnn = nn.RNN(10,20,2) # input = torch.randn(5,3,10) # h0 = torch.randn(2,20) # output,hn = rnn(input,h0) # print(output.shape,hn.shape) # torch.Size([5,20]) torch.Size([2,20]) # 雙向lstm例子 rnn = nn.LSTM(10,2) #(input_size,hidden_size,num_layers) input = torch.randn(5,10) #(seq_len,input_size) h0 = torch.randn(2,20) #(num_layers * num_directions,hidden_size) c0 = torch.randn(2,hidden_size) # output:(seq_len,num_directions * hidden_size) # hn,cn(num_layers * num_directions,hidden_size) output,(hn,cn) = rnn(input,(h0,c0)) print(output.shape,hn.shape,cn.shape) >>>torch.Size([5,20])
以上這篇基於pytorch的lstm引數使用詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。