pytorch scheduler學習速率衰減

2021-10-24 10:24:42 字數 1196 閱讀 6339

很多部落格都這樣寫

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

), lr=

0.1)

scheduler = torch.optim.lr_scheduler.steplr(optimizer, step_size=

30, gamma=

0.1)

deftrain(.

..):

for i, data in

enumerate

(train_loader):.

....

. y_ = model(x)

loss = criterion(y_,y)

loss.backward(

) optimizer.step(

) scheduler.step().

....

.

上面的寫法是錯誤的,scheduler.step()是每個epoch才執行一次,而不是每個step執行一次。下面這種寫法才是正確的。

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

), lr=

0.1)

scheduler = torch.optim.lr_scheduler.steplr(optimizer, step_size=

30, gamma=

0.1)

deftrain(.

..):

for i, data in

enumerate

(train_loader):.

....

. y_ = model(x)

loss = criterion(y_,y)

loss.backward(

) optimizer.step().

....

.for epoch in

range

(epochs)

: scheduler.step(

) train(..

.)test(..

.)

注意,scheduler.step()是每個epoch才執行一次,而不是每個epoch的step執行一次。

降低損失 學習速率

reference 正如之前所述,梯度向量具有方向和大小。梯度下降法演算法用梯度乘以乙個稱為學習速率 有時也稱為步長 的標量,以確定下乙個點的位置。例如,如果梯度大小為 2.5,學習速率為 0.01,則梯度下降法演算法會選擇距離前乙個點 0.025 的位置作為下乙個點。超引數 每個回歸問題都存在乙個...

機器學習,幾種學習速率衰減模式總結

在機器學習中,通常需要不斷的通過優化器,優化以減小損失。在優化過程中,最經常用到的就是學習速率,也就是在通過梯度決定模型訓練走向的時候所使用的乙個總要引數。在經過多次優化之後,會出現疑惑度不會降低,此時主要是因為,學習速率過大導致模型不能夠很好的進行收斂。這個時候需要做的就是,減小學習速率,促使模型...

5 3 梯度下降實用技巧(學習速率)

5.3 梯度下降中的實用技巧二 學習速率 這一節,我們將討論學習速率 參考下圖。第乙個公示是梯度下降演算法的更新規則,我們將學習兩點,一是怎樣保證梯度下降執行正確,而是怎麼選擇學習速率 梯度下降演算法的任務是為你尋找引數 並且希望它能夠最小化你的代價函式,在梯度下降演算法執行時,我通常會畫出代價函式...