pytorch入門 深度學習基礎及原理

2021-10-02 04:00:37 字數 2103 閱讀 3332

這裡有乙個重點:因為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 的不一致程度,它是乙個非負實值函式,損失函式越小,模型的魯棒性就越好。我們訓練模型的過程,就是通過不斷的迭代計算,使用梯度下降的優化演算法,使得損失函式越來越小。損失函式越小就表示...