pytorch上的迴圈層和全連線層操作

2022-07-23 16:12:30 字數 1176 閱讀 9438

迴圈層

pytorch中的三種迴圈層的實現:

層對應的類

功能torch.nn.rnn()

多層rnn單元

torch.nn.lstm()

多層長短期記憶lstm單元

torch.nn.gru()

多層門限迴圈gru單元

torch.nn.rnncell()

乙個rnn迴圈層單元

torch.nn.lstmcell()

乙個長短期記憶lstm單元

torch.nn.grucell()

乙個門限迴圈gru單元

下面以torch.nn.rnn()為例介紹迴圈層的引數、輸入和輸出

rnn的輸入為input和h_0,其中input是乙個形狀為(seq_len,batch,input_size)的張量。h_0則是乙個形狀為(num_layers*num_directions,batch, hidden_size)儲存著初始隱狀態的張量。如果不提供就預設為0。如果是雙向rnn,num_directions等於2,否則等於1.

rnn的輸出為output和h_n,其中output是乙個形狀為(seq_len, batch, hidden_size*num_directions)的張量,儲存著rnn最後一層的輸出特徵。如果輸入是被填充過的序列,那麼輸出也是被填充過的序列。

h_n是乙個形狀為(num_layers*num_directions, batch, hidden_size)的張量,儲存著最後乙個時刻的隱狀態。

全連線層

通常所說的全連線層是指乙個由多個神經元組成的層,其所有的輸出和該層所有的輸入都有連線,即每個輸入都會影響所有的神經元的輸出。在pytorch中的nn.linear()表示線性變換,全連線層可以看作是nn.linear()表示線性邊層再加上乙個啟用函式層所構成的結構。

具體操作如下:

torch.nn.linear(in_features,out_features, bias = true)

in_features:每個輸入樣本的特徵數量(看作神經元個數)

out_features:每個樣本輸出的特徵數量

bias :是否新增偏置

linear的輸入為(n,in_features)的張量,輸出為(n,out_features)的張量

全連線層和啟用層

1.全連線層 經過前面若干次卷積 激勵 池化後,終於來到了輸出層,模型會將學到的乙個高質量的特徵全連線層。其實在全連線層之前,如果神經元數目過大,學習能力強,有可能出現過擬合。因此,可以引入dropout操作,來隨機刪除神經網路中的部分神經元,來解決此問題。還可以進行區域性歸一化 資料增強等操作,來...

全連線層的作用 全連線層實現

將圖1 堆疊可以得到含有多個隱藏層的全連線層,如圖2所示。因為當前層的輸入要與前一層的輸出相匹配 所以,要保證當前層的神經元個數與前一層的輸出結點數相同。即,圖二中隱藏層1有256個神經元,隱藏層2有128個神經元,則隱藏層1中每個神經元的輸出節點數為12。下面,以圖2為例,用不同的方式實現全連線層...

全連線層後面加bn層 池化層和全連線層應用

實際的卷積網路很少僅通過卷積層來構建。它們通常還有其他型別的層。最簡單的是全連線層。這是一種普通的卷積網路層,其中前一層的所有輸出被連線到下一層上的所有節點。通常,這些層位於網路末端。您會在卷積網路中看到的另一種重要的層是池化層。池化層具有多種形式,但最常用的是最大池化,其中輸入矩陣被拆分為相同大小...