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

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

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

      Pytorch RNN 用sin預測cos

      RNN簡單介紹

      什么是RNN

      RNN的全稱是Recurrent Neural Network,中文名稱是循環(huán)神經(jīng)網(wǎng)絡。它的一大特點就是擁有記憶性,并且參數(shù)共享,所以它很適合用來處理序列數(shù)據(jù),比如說機器翻譯、語言模型、語音識別等等。

      它的結構

      它的更新公式

      (Pytorh 文檔里的 https://pytorch.org/docs/stable/generated/torch.nn.RNN.html?highlight=rnn#torch.nn.RNN)

      sin to cos

      我們這里采用的是一個seq2seq的模型,也就是,首先生成區(qū)間(a,b)的等距采樣點steps=[s0,s1,s2,...sn],然后再算出x = [x0,x1,x2,...xn], xn = sin(sn),和y = [y0, y1,y2,...,yn], yn = cos(sn)。
      RNN要做的是,把序列x轉變成序列y,也即是從sin到cos(下圖中藍色到紅色)

      可以知道,y0只受到x0的影響,而y2則同時受到[x0,x0,x1,x2]的影響,同理yn則受到[x0,...xn]的影響。

      代碼

      import torch
      from torch import nn
      import numpy as np
      import matplotlib.pyplot as plt
      
      steps = np.linspace(0, np.pi*2, 100, dtype=np.float32)
      input_x = np.sin(steps)
      target_y = np.cos(steps)
      plt.plot(steps, input_x, 'b-', label='input:sin')
      plt.plot(steps, target_y, 'r-', label='target:cos')
      
      plt.legend(loc='best')
      plt.show()
      
      
      class RNN(nn.Module):
          def __init__(self, input_size, hidden_size):
              super(RNN, self).__init__()
              
              self.hidden_size = hidden_size 
              self.rnn = nn.RNN(
                  input_size = input_size,
                  hidden_size = hidden_size,
                  batch_first = True,
              )
              
              self.out = nn.Linear(hidden_size, 1)
              
          
          def forward(self, input, hidden):
              output, hidden = self.rnn(input, hidden)
              output = self.out(output)
              return output,hidden
          
          def initHidden(self):
              hidden = torch.randn(1, self.hidden_size)
              return hidden
          
      
      rnn = RNN(input_size = 1, hidden_size = 20)
      
      hidden = rnn.initHidden()
      
      optimizer = torch.optim.Adam(rnn.parameters(), lr=0.001)
      loss_func = nn.MSELoss()
      
      plt.figure(1, figsize=(12, 5))
      plt.ion() # 開啟交互模式
      
      loss_list = []
      for step in range(800):
          start, end = step * np.pi, (step + 1) * np.pi
          steps = np.linspace(start, end, 100, dtype=np.float32)
          x_np = np.sin(steps)
          y_np = np.cos(steps)
          #(100, 1) 不加batch_size
          x = torch.from_numpy(x_np).unsqueeze(-1)
          y = torch.from_numpy(y_np).unsqueeze(-1)
          
          y_predict, hidden = rnn(x, hidden)
          hidden = hidden.data # 重新包裝數(shù)據(jù),斷掉連接,不然會報錯
          loss = loss_func(y_predict, y)
          optimizer.zero_grad() # 梯度清零
          loss.backward()  # 反向傳播
          optimizer.step() # 梯度下降
          loss_list.append(loss.item())
          if step % 10 == 0 or step % 10 == 1:
              plt.plot(steps, y_np.flatten(), 'r-')
              plt.plot(steps, y_predict.data.numpy().flatten(), 'b-')
              plt.draw();
              plt.pause(0.05)
          
      
      plt.ioff()
      plt.show()
      
      plt.plot(loss_list)
          
      

      效果





      posted @ 2022-04-03 16:10  裏表異體  閱讀(190)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 午夜福利看片在线观看| 色偷一区国产精品| 激情综合色综合啪啪五月| 孕交videos小孕妇xx| 无码一区二区三区av在线播放 | 特级做a爰片毛片免费看无码| 国产情侣一区二区三区| 东京热一精品无码av| 熟妇人妻不卡中文字幕| 国产成人一区二区免av| 九九热在线精品视频首页| 日韩秘 无码一区二区三区| 少妇激情一区二区三区视频小说| av亚洲一区二区在线| 无码中文字幕人妻在线一区| 欧美成人h精品网站| 久久精品国产熟女亚洲av| 国产一区二区三区不卡视频| 国产成人啪精品午夜网站| 九九热视频在线精品18| 妓院一钑片免看黄大片| 欧美黑人巨大xxxxx| 日日碰狠狠添天天爽五月婷| 边添小泬边狠狠躁视频| 亚洲a∨无码无在线观看| 亚洲av永久无码精品网站| 国产呻吟久久久久久久92| 久久国产精品亚洲精品99| 国产免费无遮挡吃奶视频| 庆云县| 午夜AAAAA级岛国福利在线| 在线观看热码亚洲AV每日更新| 亚洲精品香蕉一区二区| 色熟妇人妻久久中文字幕| 婷婷99视频精品全部在线观看 | 定襄县| 国产精品福利自产拍在线观看 | 亚洲一区二区中文字幕| 互助| 极品无码国模国产在线观看| 免费高潮了好湿h视频|