pytorch 不同學習率設定方法

2022-08-11 07:00:14 字數 1130 閱讀 5869

最近注意到在一些caffe模型中,偏置項的學習率通常設定為普通層的兩倍。具體原因可以參考(貌似沒有文章提到這個。

pytorch中也提供了對不同層設定不同學習率以及衰減因子的方法。

主要方法是傳遞乙個dict給optimizer,而不是list。

下面以restnet18進行說明:

首先載入resnet18 模型,並列印其引數設定:

import torch, torchvision

model = torchvision.models.resnet18()

paras = dict(model.named_parameters())

for k, v in paras.items():

print(k.ljust(30), str(v.shape).ljust(30), 'bias:', v.requires_grad)

輸出為:

設定優化器引數,並列印

paras_new = 

for k, v in paras.items():

if 'bias' in k:

paras_new +=

else:

paras_new +=

optimizer = torch.optim.sgd(paras_new, momentum=0.9)

for p in optimizer.param_groups:

outputs = ''

for k, v in p.items():

if k is 'params':

outputs += (k + ': ' + str(v[0].shape).ljust(30) + ' ')

else:

outputs += (k + ': ' + str(v).ljust(10) + ' ')

print(outputs)

結果為:

分層學習率設定和學習率衰減(pytorch)

在使用bert或者其它預訓練模型進行微調,下接其它具體任務相關的模組時,會面臨這樣乙個問題,bert由於已經進行了預訓練,引數已經達到了乙個較好的水平,如果要保持其不會降低,學習率就不能太大,而下接結構是從零開始訓練,用小的學習率訓練不僅學習慢,而且也很難與bert本體訓練同步。因此在訓練時候就需要...

Pytorch學習率更新

自己在嘗試了官方的 後就想提高訓練的精度就想到了調整學習率,但固定的學習率肯定不適合訓練就嘗試了幾個更改學習率的方法,但沒想到居然更差!可能有幾個學習率沒怎麼嘗試吧 import torch import matplotlib.pyplot as plt matplotlib inline from...

Pytorch學習率更新

自己在嘗試了官方的 後就想提高訓練的精度就想到了調整學習率,但固定的學習率肯定不適合訓練就嘗試了幾個更改學習率的方法,但沒想到居然更差!可能有幾個學習率沒怎麼嘗試吧 import torch import matplotlib.pyplot as plt matplotlib inline from...