iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
AI & Data

30Day 從一介凡人羽化成資料科學初學者系列 第 20

Day20-pytorch(3)設置model、使用pytorch設置loss function及updata參數

我們透過簡單的regression來認識如何設置model及如何使用pytorch設置loss function及updata參數
先設個範例資料,總共4筆資料
x為輸入,特徵值有兩個
y為要訓練的目標
https://ithelp.ithome.com.tw/upload/images/20210904/20140416gjvIBINJbD.png

設置模型時會先import torch.nn並命名為nn
https://ithelp.ithome.com.tw/upload/images/20210904/20140416qrXpmPCF2Y.png

設置模型:
建立一個class並繼承nn.Module
在__init__需輸入super(Model,self).init()
設置self.net為我們自己的模型
透過nn.Sequential方法來建立,之後在後方傳入你想要的模型樣子
nn.Linear用來加入線性的模型,後方參數傳入模型輸入值與輸出值
第一個輸入並符合輸入資料的資料個數,所以我一開始先傳入x.shape[1]
線性模型後接上activation function,這裡我都使用ReLU
def forward後方必須傳入輸入參數,會回傳model計算結果
https://ithelp.ithome.com.tw/upload/images/20210904/20140416Y6JkAKMKcX.png

設置迭代次數及learning rate:
n_iter為我們想要訓練的次數
learning rate在這裡設置,之後會傳入optimizer後方參數,等一下你就看得到了
https://ithelp.ithome.com.tw/upload/images/20210904/20140416vVdXyPbWSG.png

設置loss function及optimizer:
我將critirion設為loss function的變數名稱,後方傳入pytroch內已有的方法nn.MSELoss()
表示此loss function是計算mean-square error
optimizer設為updata參數的變數名稱,後方傳入pytorch內已有的方法,這裡我選擇adam演算法
後方需傳入model參數及learning rate
https://ithelp.ithome.com.tw/upload/images/20210904/201404161nrZN3EBR8.png

開始訓練資料
pre為model計算完結果
將pre與訓練目標y傳入critirion來算出loss
optimizer.zero_grad()一定要傳入,要歸零上一次的微分結果
loss.backward算出這次的微分結果
optimizer.step()根據傳入的演算法updata參數,這裡就是使用上面設置的adam演算法
https://ithelp.ithome.com.tw/upload/images/20210904/2014041661SMSGKPfY.png

查看訓練結果
可看出我們訓練結果已與目標非常相近
https://ithelp.ithome.com.tw/upload/images/20210904/20140416XfvKQFWaJ5.png

送上colab連結,可自行在上面多做點練習更加熟悉pytorch
https://colab.research.google.com/drive/1CiullFEJa1vGMrH-qNeWgDUwXHJ_PrfB?usp=sharing


上一篇
Day19-pytorch(2)認識backward、自己設置loss function及updata參數
下一篇
Day21-pytorch(4)Dataset、DataLoader
系列文
30Day 從一介凡人羽化成資料科學初學者30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言