pytorch迴圈神經網路引數說明

2021-10-02 19:56:13 字數 2295 閱讀 3429

時常遇到迴圈神經網路,偶爾也會使用迴圈神經網路模型,但是很容易將rnn中一些引數含義忘記,既然不能像迴圈神經網路能記憶歷史資訊,那我只好將rnn引數內容整理成文件,方便日後查閱使用。以下是rnn中引數含義:

input_size:輸入x的特徵維度

hidden_size: 隱藏層特徵數量

num_layers:網路層數,預設為1層。若2層,兩個rnn單元進行堆疊,第2個rnn單元將第1個rnn單元的h作為輸入

nonlinearity:表示非線性函式的選擇,,預設的是tanh,也可以選擇relu

bias:偏置項的使用,false代表不使用,預設情況是true

batch_first:決定輸入資料的維度順序。預設輸入是(seq,batch,feature),分別是rnn序列長度,批量數,特徵維度。true表示(batch,seq,feature)

.dropout:接收乙個0

~1的數值,會在網路除最後一層之外的其他輸出層加上dropout層,預設為0

bidirectional:如果是true,表示雙向的rnn。

下面使用pytorch實現乙個簡單的rnn

import torch as t

import torch.nn as nn

print

(t.__version__)

rnn = nn.rnn(input_size=

5, hidden_size=

8, num_layers=2)

input

= t.randn(3,

2,5)

#初始化隱藏層

h_t = t.randn(2,

2,8)

output, hn = rnn(

input

, h_t)

print

(input

)print

(h_t)

print

(output.size())

輸出結果:

1.2.0

tensor([[

[1.1311,-

0.0911

,0.2468,-

0.6441

,1.1080],

[-0.9891,-

0.5532,-

0.0259

,0.6039,-

1.8732]]

,[[-

1.1822

,0.6525,-

0.0145

,0.3297

,1.3425],

[0.0903,-

0.2391

,1.8707,-

0.3079,-

0.2726]]

,[[-

0.0765,-

2.5307

,1.2250

,1.2432

,0.3407],

[1.4116,-

1.1553

,0.2593,-

1.0739,-

0.0395]]

])tensor([[

[5.9434e-01,-

2.7574e-01,-

1.1781e-01

,2.8008e-01

,1.2022e+00,-

9.7032e-02

,1.0363e+00

,2.1665e+00],

[1.2549e-01

,9.1247e-01

,8.0141e-01,-

3.8630e-01

,3.6998e-02,-

1.0043e+00,-

8.0889e-01,-

2.2091e+00]]

,[[-

5.4489e-01

,2.4675e+00,-

9.9404e-01

,1.9480e-01

,1.9308e+00,-

3.8715e-01,-

5.8669e-01

,8.6178e-01],

[5.2911e-01,-

5.7136e-01

,6.4384e-04,-

8.6905e-01

,5.3215e-02,-

1.1907e+00

,3.4911e-01,-

1.0760e+00]]

])torch.size([3

,2,8

])

「不積跬步無以至千里,不積小流無以成江河」,夯實程式設計基礎,從一點一滴開始。

RNN 迴圈神經網路 分類 pytorch

import torch from torch import nn import torchvision.datasets as dsets import torchvision.transforms as transforms import matplotlib.pyplot as plt imp...

pytorch(八) RNN迴圈神經網路 分類

import torch import torch.nn as nn import torchvision.transforms as transforms from torch.autograd import variable import matplotlib.pyplot as plt imp...

pytorch中的迴圈神經網路模組

對於最簡單的rnn,我們可以使用以下兩個方法呼叫,分別是torch.nn.rnncell 和torch.nn.rnn 這兩種方式的區別在於rnncell 只能接受序列中單步的輸入,且必須傳入隱藏狀態,而rnn 可以接受乙個序列的輸入,缺省會傳入全 0 的隱藏狀態,也可以自己申明隱藏狀態傳入。rnn ...