pytorch中nn.RNN()匯總
nn.RNN(input_size, hidden_size, num_layers=1, nonlinearity=tanh, bias=True, batch_first=False, dropout=0, bidirectional=False)
參數(shù)說(shuō)明
- input_size輸入特征的維度, 一般rnn中輸入的是詞向量,那么 input_size 就等于一個(gè)詞向量的維度
- hidden_size隱藏層神經(jīng)元個(gè)數(shù),或者也叫輸出的維度(因?yàn)閞nn輸出為各個(gè)時(shí)間步上的隱藏狀態(tài))
- num_layers網(wǎng)絡(luò)的層數(shù)
- nonlinearity激活函數(shù)
- bias是否使用偏置
- batch_first輸入數(shù)據(jù)的形式,默認(rèn)是 False,就是這樣形式,(seq(num_step), batch, input_dim),也就是將序列長(zhǎng)度放在第一位,batch 放在第二位
- dropout是否應(yīng)用dropout, 默認(rèn)不使用,如若使用將其設(shè)置成一個(gè)0-1的數(shù)字即可
- birdirectional是否使用雙向的 rnn,默認(rèn)是 False
- 注意某些參數(shù)的默認(rèn)值在標(biāo)題中已注明
輸入輸出shape
- input_shape = [時(shí)間步數(shù), 批量大小, 特征維度] = [num_steps(seq_length), batch_size, input_dim]
- 在前向計(jì)算后會(huì)分別返回輸出和隱藏狀態(tài)h,其中輸出指的是隱藏層在各個(gè)時(shí)間步上計(jì)算并輸出的隱藏狀態(tài),它們通常作為后續(xù)輸出層的輸?。需要強(qiáng)調(diào)的是,該“輸出”本身并不涉及輸出層計(jì)算,形狀為(時(shí)間步數(shù), 批量大小, 隱藏單元個(gè)數(shù));隱藏狀態(tài)指的是隱藏層在最后時(shí)間步的隱藏狀態(tài):當(dāng)隱藏層有多層時(shí),每?層的隱藏狀態(tài)都會(huì)記錄在該變量中;對(duì)于像?短期記憶(LSTM),隱藏狀態(tài)是?個(gè)元組(h, c),即hidden state和cell state(此處普通rnn只有一個(gè)值)隱藏狀態(tài)h的形狀為(層數(shù), 批量大小,隱藏單元個(gè)數(shù))
代碼
rnn_layer = nn.RNN(input_size=vocab_size, hidden_size=num_hiddens, ) # 定義模型, 其中vocab_size = 1027, hidden_size = 256
num_steps = 35 batch_size = 2 state = None # 初始隱藏層狀態(tài)可以不定義 X = torch.rand(num_steps, batch_size, vocab_size) Y, state_new = rnn_layer(X, state) print(Y.shape, len(state_new), state_new.shape)
輸出
torch.Size([35, 2, 256]) 1 torch.Size([1, 2, 256])
具體計(jì)算過(guò)程
H t = i n p u t ∗ W x h + H t − 1 ∗ W h h + b i a s H_t = input * W_{xh} + H_{t-1} * W_{hh} + bias Ht?=input∗Wxh?+Ht−1?∗Whh?+bias[batch_size, input_dim] * [input_dim, num_hiddens] + [batch_size, num_hiddens] *[num_hiddens, num_hiddens] +bias
可以發(fā)現(xiàn)每個(gè)隱藏狀態(tài)形狀都是[batch_size, num_hiddens], 起始輸出也是一樣的
注意:上面為了方便假設(shè)num_step=1
GRU/LSTM等參數(shù)同上面RNN
到此這篇關(guān)于pytorch中nn.RNN()總結(jié)的文章就介紹到這了,更多相關(guān)pytorch nn.RNN()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python+imbox庫(kù)實(shí)現(xiàn)郵件讀取與刪除和附件下載
這篇文章主要為大家詳細(xì)介紹了Python如何使用imbox庫(kù)實(shí)現(xiàn)郵件讀取與刪除以及附件下載,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2025-02-02
Python openpyxl庫(kù)處理Excel文件高級(jí)應(yīng)用技巧實(shí)例
openpyxl是一個(gè)用于處理Excel文件的Python庫(kù),它提供了豐富的功能,使得用戶能夠輕松地讀取、寫入和操作Excel文件,而不需要依賴于Microsoft Excel軟件,作為一個(gè)開(kāi)源項(xiàng)目,openpyxl在Python生態(tài)系統(tǒng)中得到了廣泛的應(yīng)用,成為處理Excel數(shù)據(jù)的首選工具之一2024-01-01
Python利用Bokeh進(jìn)行數(shù)據(jù)可視化的教程分享
Bokeh是Python中的數(shù)據(jù)可視化庫(kù),提供高性能的交互式圖表和繪圖。本文將利用Bokeh繪制一些可視化圖表,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-08-08

