pytorch笔记:torch.nn.GRU torch.nn.LSTM
1 函數(shù)介紹 (GRU)
????????對于輸入序列中的每個元素,每一層計算以下函數(shù):
其中是在t時刻的隱藏狀態(tài),是在t時刻的輸入。σ是sigmoid函數(shù),*是逐元素的哈達(dá)瑪積
? ? ? ? 對于多層GRU 第l層的輸入(l≥2)是之前一層的隱藏狀態(tài),乘以dropout?
2 輸入?yún)?shù)介紹(GRU)
| input_size | 輸入特征的大小 |
| hidden_size | 隱藏層h特征的大小 |
| num_layers | GRU層數(shù)。 ????????例如,設(shè)置 num_layers=2 意味著將兩個 GRU 堆疊在一起形成一個堆疊的 GRU,第二個 GRU 接收第一個 GRU 的輸出并計算最終結(jié)果。 默認(rèn)值:1 |
| bias | 默認(rèn)值True 上式的那些b是否為0,如果是False的話,那么這些b就都是0 |
| batch_first | 如果為 True,則輸入和輸出Tensor的維度為 (batch, seq, feature) 而不是 (seq, batch, feature)。 默認(rèn)值:False |
| dropout | 如果非零,則在除最后一層之外的每個 GRU 層的輸出上引入一個 Dropout 層,dropout 概率等于 dropout。 默認(rèn)值:0 |
| bidirectional | 如果是True,那么就變成雙向GRU 默認(rèn)值:False |
3 使用舉例(GRU)
?3.1 輸入tensor的維度
????????? input:當(dāng)batch_first=False的時候,維度為;否則是
? ? ? ? h_0:?
3.2 輸出tensor的維度
? ? ? ? output:當(dāng)batch_first=False的時候,維度為;否則是
? ? ? ? h_n:
3.3 實例說明
import torchGRU=torch.nn.GRU(input_size=10,hidden_size=20,num_layers=20)input_tensor=torch.randn(5,3,10) ''' 輸入的sequence長5 batch_size為3 輸入sequence每一個元素的維度為10 ''' h0=torch.randn(1*20,3,20) ''' 第一個參數(shù):單方向GRU(1),20層GRU(20) 第二個參數(shù):batch_size 第三個參數(shù):hidden_size的大小 ''' output,hn=GRU(input_tensor,h0) output.shape,hn.shape #(torch.Size([5, 3, 20]), torch.Size([20, 3, 20]))4 torch.nn.LSTM
和GRU幾乎完全一模一樣,這里說幾個不同的地方:
聲明的時候,在bidirectional 后面還有一個參數(shù)proj_size,默認(rèn)為0。如果這個參數(shù)為0,那么Hc和Hout的維度都是;如果參數(shù)大于0,那么Hc仍然是???????,Hout變成
?
?
?
????????
總結(jié)
以上是生活随笔為你收集整理的pytorch笔记:torch.nn.GRU torch.nn.LSTM的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pytorch错误解决: BrokenP
- 下一篇: python笔记: staticmeth