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