在 Deep Learning with Python 中了解到 loss function 與 optimizer 的重要性,見MNIST練習
損失函數是指用於計算實際值和預測值之間差異的函數,在機器學習過程中,有多種損失函數可供選擇。
PyTorch 文檔中介紹了許多Loss function 可以使用,當然也可以自定義,後面高級用法再來練習。
PyTorch 的
PyTorch 的
Module
, 各種 NN Layer
, Loss function
, regularization
, activation function
幾乎都在 torch.nn 中可以找到用法。 也有中文版可以看。
以下來練習一些簡單的Loss function 實作。
首先先給個兩組假設的數組,其一假裝是預測值,另一個組則是實際值,去計算其誤差值。
import torch
from torch.autograd import Variable
import torch.nn as nn
import torch.nn.functional as F
y_pre = Variable(torch.ones(2,2))
a=torch.Tensor(2,2)
a[0,0]=0
a[0,1]=1
a[1,0]=2
a[1,1]=3
y_target = Variable (a)
#print出來看看
print(y_pre)
print(y_target)
tensor([[1., 1.],
[1., 1.]])
tensor([[0., 1.],
[2., 3.]])
預測數組是[[1., 1.],[1., 1.]] 實際值是[[0., 1.],[2., 3.]]
接著來套用一些常用的loss function
1. class torch.nn.L1Loss(size_average=True)
公式如下:
criterion = nn.L1Loss()
loss = criterion(y_pre, y_target)
print(loss)
tensor(1.)
先計算絕對差總和:|0-1|+|1-1|+|2-1|+|3-1|=4;
然後再取平均:4/4=1。最後得到1。
然後再取平均:4/4=1。最後得到1。
2. class torch.nn.MSELoss(size_average=True)
公式如下:
這算是regression 常用的 loss function。
這算是regression 常用的 loss function。
criterion = nn.MSELoss()
loss = criterion(y_pre, y_target)
print(loss)
tensor(1.5000)
計算過程就省略了,將值套進公式即可。
後續還有很多不同的Loss function
可以參考 pytorch 文檔
可以參考 pytorch 文檔
這邊就先練習到這,其實做法很簡單,兩行代碼就可以處理計算loss值。
沒有留言:
張貼留言