Pytorch中的梯度下降及優化

2021-10-02 21:04:33 字數 1629 閱讀 5664

在pytorch中使用mini-batch這種方法進行訓練

對整個訓練集進行梯度下降法的時候,我們必須處理整個訓練資料集,然後才能進行一步梯度下降,即每一步梯度下降法需要對整個訓練集進行一次處理,如果訓練資料集很大的時候處理速度會很慢,而且也不可能一次的載入到記憶體或者視訊記憶體中

所以我們會把大資料集分成小資料集,一部分一部分的訓練,這個訓練子集即稱為mini-batch

對於普通的梯度下降法,乙個epoch只能進行一次梯度下降;而對於mini-batch梯度下降法,乙個epoch可以進行mini-batch的個數次梯度下降。

普通的batch梯度下降法和mini-batch梯度下降法代價函式的變化趨勢,如下圖所示:

torch.optim是乙個實現了各種優化演算法的庫。大部分常用優化演算法都有實現

stochastic gradient descent

隨機梯度下降演算法,帶有動量(momentum)的演算法作為乙個可選引數可以進行設定

可以把動量看作慣性:當你跑起來,由於慣性的存在你跑起來會比剛起步加速的時候更輕鬆,當你跑過頭,想調頭往回跑,慣性會讓你拖著你。

在普通的梯度下降法的方向相同,則會加速。反之,則會減速。

加了動量的優勢:

加速收斂

提高精度(減少收斂過程中的振盪)

sgd(params, lr=

, momentum=

0, dampening=

0, weight_decay=

0, nesterov=

false

)

root mean square prop

均方根傳遞。也是一種可以加快梯度下降的演算法,利用rmsprop演算法,可以減小某些維度梯度更新波動較大的情況,使其梯度下降的速度變得更快

相較於gradient descent with momentum,rmsprop的思想是:

adam 優化演算法的基本思想就是將 momentum 和 rmsprop 結合起來形成的一種適用於不同深度學習結構的優化演算法

它能基於訓練資料迭代地更新神經網路權重

詳細介紹

e.d.

# 這裡的lr,betas,還有eps都是用預設值即可,所以adam是乙個使用起來最簡單的優化方法

optimizer = torch.optim.adam(model.parameters(

), lr=

0.001

, betas=

(0.9

,0.999

), eps=1e-

08)

Pytorch 二 梯度下降

一 梯度下降的作用 乙個神經網路的典型訓練過程如下 定義包含一些可學習引數 或者叫權重 的神經網路 在輸入資料集上迭代 通過網路處理輸入 計算損失 輸出和正確答案的距離 將梯度反向傳播給網路的引數 更新網路的權重,一般使用乙個簡單的規則 weight weight learning rate gra...

pytorch 梯度下降與反向傳播

在模型訓練中,損失函式用來衡量 值與真實值之間的誤差,數值越小表示誤差越小。乙個常見的選擇是平方函式。它在評估索引為 i 的樣本誤差的表示式為 可能有人想問這裡為什麼要除以1 2,其實有沒有1 2對於損失函式來說效果是一樣的,加上1 2是為了求導方便 把平方求導的係數變成1 批量樣本的損失函式是單個...

理解pytorch中的梯度

粗淺理解就是,只有變數才有梯度,因為梯度是求導得來的嘛 created on tue jan 12 16 41 46 2021 認識pytorch中的梯度 author user import torch from torch.autograd import variable x11 torch.t...