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

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

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

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  # 返回最後獲得的數據

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

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)
)
'''

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

相關文章
相關標籤/搜索