<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      RNN的PyTorch實現

      官方實現

      PyTorch已經實現了一個RNN類,就在torch.nn工具包中,通過torch.nn.RNN調用。

      使用步驟:

      1. 實例化類;
      2. 將輸入層向量和隱藏層向量初始狀態值傳給實例化后的對象,獲得RNN的輸出。

      在實例化該類時,需要傳入如下屬性:

      • input_size:輸入層神經元個數;
      • hidden_size:每層隱藏層的神經元個數;
      • num_layers:隱藏層層數,默認設置為1層;
      • nonlinearity:激活函數的選擇,可選是'tanh'或者'relu',默認設置為'tanh';
      • bias:偏置系數,可選是'True'或者'False',默認設置為'True';
      • batch_first:可選是'True'或者'False',默認設置為'False';
      • dropout:默認設置為0。若為非0,將在除最后一層的每層RNN輸出上引入Dropout層,dropout概率就是該非零值;
      • bidirectional:默認設置為False。若為True,即為雙向RNN。

      RNN的輸入有兩個,一個是input,一個是h0。input就是輸入層向量,h0就是隱藏層初始狀態值。
      若沒有采用批量輸入,則輸入層向量的形狀為(L, Hin);
      若采用批量輸入,且batch_first為False,則輸入層向量的形狀為(L, N, Hin);
      若采用批量輸入,且batch_first為True,則輸入層向量的形狀為(N, L, Hin);
      對于(N, L, Hin),在文本輸入時,可以按順序理解為(每次輸入幾句話,每句話有幾個字,每個字由多少維的向量表示)。

      若沒有采用批量輸入,則隱藏層向量的形狀為(D * num_layers, Hout);
      若采用批量輸入,則隱藏層向量的形狀為(D * num_layers, N, Hout);
      注意,batch_first的設置對隱藏層向量的形狀不起作用。

      RNN的輸出有兩個,一個是output,一個是hn。output包含了每個時間步最后一層的隱藏層狀態,hn包含了最后一個時間步每層的隱藏層狀態。
      若沒有采用批量輸入,則輸出層向量的形狀為(L, D * Hout);
      若采用批量輸入,且batch_first為False,則輸出層向量的形狀為(L, N, D * Hout);
      若采用批量輸入,且batch_first為True,則輸出層向量的形狀為(N, L, D * Hout)。

      參數解釋:

      • N代表的是批量大小;
      • L代表的是輸入的序列長度;
      • 若是雙向RNN,則D的值為2;若是單向RNN,則D的值為1;
      • Hin在數值上是輸入層神經元個數;
      • Hout在數值上是隱藏層神經元個數。

      復現代碼

      import torch
      import torch.nn as nn
      rnn = nn.RNN(10, 20, 1, batch_first=True)  # 實例化一個單向單層RNN
      input = torch.randn(5, 3, 10)
      h0 = torch.randn(1, 5, 20)
      output, hn = rnn(input, h0)
      

      手寫復現

      復現代碼

      import torch
      import torch.nn as nn
      
      class MyRNN(nn.Module):
          def __init__(self, input_size, hidden_size):
              super().__init__()
              self.input_size = input_size
              self.hidden_size = hidden_size
              self.weight_ih = torch.randn(self.hidden_size, self.input_size) * 0.01
              self.weight_hh = torch.randn(self.hidden_size, self.hidden_size) * 0.01
              self.bias_ih = torch.randn(self.hidden_size)
              self.bias_hh = torch.randn(self.hidden_size)
              
          def forward(self, input, h0):
              N, L, input_size = input.shape
              output = torch.zeros(N, L, self.hidden_size)
              for t in range(L):
                  x = input[:, t, :].unsqueeze(2)  # 獲得當前時刻的輸入特征,[N, input_size, 1]。unsqueeze(n),在第n維上增加一維
                  w_ih_batch = self.weight_ih.unsqueeze(0).tile(N, 1, 1)  # [N, hidden_size, input_size]
                  w_hh_batch = self.weight_hh.unsqueeze(0).tile(N, 1, 1)  # [N, hidden_size, hidden_size]
                  w_times_x = torch.bmm(w_ih_batch, x).squeeze(-1)  # [N, hidden_size]。squeeze(n),在第n維上減小一維
                  w_times_h = torch.bmm(w_hh_batch, h0.unsqueeze(2)).squeeze(-1)  # [N, hidden_size]
                  h0 = torch.tanh(w_times_x + self.bias_ih  + w_times_h + self.bias_hh)
                  output[:, t, :] = h0
              return output, h0.unsqueeze(0)
      

      驗證正確性

      my_rnn = MyRNN(10, 20)
      input = torch.randn(5, 3, 10)
      h0 = torch.randn(5, 20)
      my_output, my_hn = my_rnn(input, h0)
      print(output.shape == my_output.shape, hn.shape == my_hn.shape)
      
      True True
      

      主要參考

      官方說明文檔

      posted @ 2022-11-19 20:05  大雄的叮當貓  閱讀(570)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 午夜福利啪啪片| 欧日韩无套内射变态| 国产熟女激情一区二区三区| 无遮无挡爽爽免费视频| 国产又色又爽又黄的| aa性欧美老妇人牲交免费| 老熟妇欲乱一区二区三区| 色欧美片视频在线观看| 日本japanese丰满白浆| 天堂在/线中文在线资源 官网| 日韩av一区二区不卡在线| 中国女人熟毛茸茸A毛片| 无码日韩人妻精品久久蜜桃| 亚洲女同性同志熟女| 久久免费网站91色网站| 额济纳旗| 日本一区二区三区在线看| 国产福利萌白酱在线观看视频| 亚洲鸥美日韩精品久久| 国产精品中文一区二区| 伊伊人成亚洲综合人网7777 | 国产免费无遮挡吸奶头视频 | 午夜福利理论片高清在线| 国产果冻豆传媒麻婆精东| 特黄少妇60分钟在线观看播放| 午夜福利免费区在线观看| 枝江市| 亚洲精品一区二区三天美| 黄浦区| 久久蜜臀av一区三区| 欧美成人午夜在线观看视频| 在线精品视频一区二区三四| 开心五月深深爱天天天操| 国产精品毛片一区二区| 99国产精品永久免费视频| 亚洲国产成人极品综合| 日韩一区二区三区av在线| 欧美老熟妇又粗又大| 亚洲中文字幕久久精品码| 精品国偷自产在线视频99| 兴仁县|