這裡有乙個重點:因為pytorch是使用mini-batch來進行計算的,所以損失函式的計算出來的結果已經對mini-batch取了平均
nn.l1loss:輸入x和目標y之間差的絕對值,要求 x 和 y 的維度要一樣(可以是向量或者矩陣),得到的 loss 維度也是對應一樣的
nn.nllloss:用於多分類的負對數似然損失函式
nn.mseloss: 均方損失函式 ,輸入x和目標y之間均方差,用的最多。
nn.crossentropyloss:多分類用的交叉熵損失函式,logsoftmax和nllloss整合到乙個類中,會呼叫nn.nllloss函式
nn.bceloss:計算 x 與 y 之間的二進位制交叉熵。
mini-batch的梯度下降法
對整個訓練集進行梯度下降法的時候,我們必須處理整個訓練資料集,然後才能進行一步梯度下降,即每一步梯度下降法需要對整個訓練集進行一次處理,如果訓練資料集很大的時候處理速度會很慢,而且也不可能一次的載入到記憶體或者視訊記憶體中,所以我們會把大資料集分成小資料集,一部分一部分的訓練,這個訓練子集即稱為mini-batch。
對於普通的梯度下降法,乙個epoch只能進行一次梯度下降;而對於mini-batch梯度下降法,乙個epoch可以進行mini-batch的個數次梯度下降。
torch.optim是乙個實現了各種優化演算法的庫。大部分常用優化演算法都有實現,我們直接呼叫即可
torch.optim.sgd
隨機梯度下降演算法,帶有動量(momentum)的演算法作為乙個可選引數可以進行設定,樣例如下:
#lr引數為學習率,對於sgd來說一般選擇0.1 0.01.0.001,如何設定會在後面實戰的章節中詳細說明
##如果設定了momentum,就是帶有動量的sgd,可以不設定
optimizer = torch.optim.sgd(model.parameters(
), lr=
0.1, momentum=
0.9)
torch.optim.rmsprop
除了以上的帶有動量momentum梯度下降法外,rmsprop(root mean square prop)也是一種可以加快梯度下降的演算法,利用rmsprop演算法,可以減小某些維度梯度更新波動較大的情況,使其梯度下降的速度變得更快
#基本不會使用到rmsprop所以這裡只給乙個例項
optimizer = torch.optim.rmsprop(model.parameters(
), lr=
0.01
, alpha=
0.99
)
torch.optim.adam
adam 優化演算法的基本思想就是將 momentum 和 rmsprop 結合起來形成的一種適用於不同深度學習結構的優化演算法
# 這裡的lr,betas,還有eps都是用預設值即可,所以adam是乙個使用起來最簡單的優化方法
optimizer = torch.optim.adam(model.parameters(
), lr=
0.001
, betas=
(0.9
,0.999
), eps=1e-
08)
高偏差(high bias)的情況,一般稱為欠擬合(underfitting),即我們的模型並沒有很好的去適配現有的資料,擬合度不夠。
高方差(high variance)的情況一般稱作過擬合(overfitting),即模型對於訓練資料擬合度太高了,失去了泛化的能力。
欠擬合:
增加網路結構,如增加隱藏層數目;
訓練更長時間;
尋找合適的網路架構,使用更大的nn結構;
過擬合 :
使用更多的資料;
正則化( regularization);
尋找合適的網路結構;
利用正則化來解決high variance 的問題,正則化是在 cost function 中加入一項正則化項,懲罰模型的複雜度
l1正則化
損失函式基礎上加上權重引數的絕對值
l2正則化
損失函式基礎上加上權重引數的平方和
需要說明的是:l1 相比於 l2 會更容易獲得稀疏解
深度學習 Pytorch基礎
import torch import numpy as np 建立tensor 1 傳入列表 2 傳入陣列 3 呼叫api torch.empty 會用無用資料填充 0 torch.ones torch.zeros torch.rand 3,4 取0 1 torch.randint low 0,h...
深度學習入門之PytoRch 一 深度學習發展歷史
2 學習本書之前建議 我們一提到人工智慧就會想到機械人,其實機械人只是人工智慧的容器,沒有這個容器也是可以的,可以將人工智慧分為三個方面 1 弱人工智慧 比如戰勝全世界的al phago,它只會下象棋,但是辨識一下貓和狗的話,他就不知道怎麼做 2 強人工智慧 就是人類能幹的腦力活動,它全部都能幹 3...
Pytorch學習 6深度學習數學基礎
損失函式 loss function 是用來估量模型的 值 我們例子中的output 與真實值 例子中的y train 的不一致程度,它是乙個非負實值函式,損失函式越小,模型的魯棒性就越好。我們訓練模型的過程,就是通過不斷的迭代計算,使用梯度下降的優化演算法,使得損失函式越來越小。損失函式越小就表示...