pytorch入門2.1構建回歸模型初體驗(模型構建)


pytorch入門2.x構建回歸模型系列:
pytorch入門2.0構建回歸模型初體驗(數據生成)
pytorch入門2.1構建回歸模型初體驗(模型構建)
pytorch入門2.2構建回歸模型初體驗(開始訓練)
終於要構建模型啦。這里我們構建的是回歸模型,是用神經網絡構建的,基本結構是什么樣的呢?
你肯定聽說過,神經網絡有輸入層、隱藏層、輸出層,一般結構如下圖所示(圖片來源於網絡,侵刪):

所以,對比我們之前生成的數據來說,形如x=3我們想得到的輸出為y=8。分別對應了上面的輸入層和輸出層,所以,在此我們要構建中間的隱藏層來模擬那個看不見的函數(我們生成數據的函數,假設是未知的,因為如果是已知的,我們直接用這個函數式子來求輸出啦。現在就是利用神經網絡強大的對函數的擬合能力,來模擬這個函數)。
下面就來建立第一個模型吧:

class LinearRegression(nn.Module):  # 繼承父類nn.Module,很多額外的、重要的東西就不用寫了,只管自己做的事情就可以(你不是要建立回歸模型么)
    def __init__(self):
        super(LinearRegression,self).__init__()  # 調用父類的初始化函數
        # 建立隱藏層,下面是三個隱藏層
        self.linear = nn.Linear(1,10)  # 輸入是一個數,所以輸出是1,中間建立10個隱藏層節點,此時,你輸出的是10個數 
        self.linear2 = nn.Linear(10,6,bias=True)  # 承接上一層的輸入,10個數,此層在融合成6個數。這里加了個偏置參數。 
        self.linear3 = nn.Linear(6,1)  # 輸出層,承接上面6個數,最終輸出一個數
        # 至此網絡的部件定義完畢

    # 網絡的部件定義好了,下面開始組裝啦,設置數據如何在網絡中流動,即前向傳播
    def forward(self,x):  #輸入的是x,就是指前面的輸入層的輸入
        # 設置數據流動過程,如果網絡非常復雜,此處要注意輸入數據的維度,經過各層之后得到的數據維度。
        x = F.relu(self.linear(x))  #首先經過一個線性層linear,然后經過一個激活函數relu
        x = F.relu(self.linear2(x))  #同上
        x = self.linear3(x)  # 最終經過最后的線性層,得到結果,結果是1維的哦
        return x  # 返回最后得到的數據

經過上面之后,一個網絡模型就定義完成了,動動腦筋想想我們構建的模型是怎么樣的呢?就是形如上面那張圖的樣子,只是中間的節點數量會變化。
模型定義好了,當然我們用的時候要實例化,我們先實例化一下,打印出來看看模型啥樣?

model = LinearRegression()
print(model)
'''
===output===
LinearRegression(
  (linear): Linear(in_features=1, out_features=10, bias=True)
  (linear2): Linear(in_features=10, out_features=6, bias=True)
  (linear3): Linear(in_features=6, out_features=1, bias=True)
)
'''

可以看到模型的形狀正如我們上面所介紹,網絡模型是有三個線性層,這里把激活函數省略了。
下一節,我們繼續介紹如何使用定義好的網絡模型去做回歸訓練啦。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM