為了得到更好的網路,學習率通常是要調整的,即剛開始用較大的學習率來加快網路的訓練,之後為了提高精確度,需要將學習率調低一點。
如圖所示,步長(學習率)太大容易跨過最優解。
表示每20個epoch學習率調整為之前的10%
optimizer = optim.sgd(gan.parameters(),
lr=0.1,
momentum=0.9,
weight_decay=0.0005)
ombgchxbw
lr = optimizer.param_groups[0]['lr'] * (0.1 ** (epoch // 20))
for param_group in optimizer.param_groups:
param_group['lr'] = lr
print(optimizer.param_groups[0]['lr'])
補充:pytorch 在訓練過程中實現學習率衰減
在網路的訓練過程中,學習率是乙個非常重要的超引數,它直接影響了網路的訓練效果。
但過大的學習率將會導致網路無法達到區域性最小點,使得訓練結果**,準確率無法提公升,而過小的學習率將會導致擬合速度過慢,浪費大量的時間和算力。
因此我們希望在訓練之初能夠有較大的學習率加快擬合的速率,之後降低學習率,使得網路能夠更好的達到區域性最小,提高網路的效率。
torch.optim.lr_scheduler.lambdalr()
torch.optim.lr_scheduler.lambdalr(optimizer, lr_lambda, last_epoch=-1)
其中optimizer就是包裝好的優化器, lr_lambda即為操作學習率的函式。
將每個引數組的學習速率設定為初始的lr乘以乙個給定的函式。
當last_epoch=-1時,將初始lr設定為lr。
torch.optim.lr_scheduler.steplr()
torchombgchxbw.optim.lr_scheduler.steplr(optimizer, step_size, gamma=0.1, last_epoch=-1)
其中optimizer就是包裝好的優化器,step_size (int) 為學習率衰減期,指幾個epoch衰減一次。gamma為學習率衰減的乘積因子。ombgchxbw 預設為0.1 。當last_epoch=-1時,將初始lr設定為lr。
本文標題: pytorch 如何訓練網路時調整學習率
本文位址: /jiaoben/python/397503.html
Pytorch訓練網路時調整學習率
為了得到更好的網路,學習率通常是要調整的,即剛開始用較大的學習率來加快網路的訓練,之後為了提高精確度,需要將學習率調低一點。如圖所示,步長 學習率 太大容易跨過最優解。如下 表示每20個epoch學習率調整為之前的10 optimizer optim.sgd gan.parameters lr 0....
Pytorch 修改預訓練網路結構
我們以 inceptionv3 為例 pytorch裡我們如何使用設計好的網路結構,比如inceptionv3 import torchvision.models as models inception models.inception v3 pretrained true pytorch提供了個叫...
pytorch 回歸網路和訓練過程
1 構建資料集 我們建立一些假資料來模擬真實的情況.比如乙個一元二次函式 y a x 2 b,我們給y資料加上一點雜訊來更加真實的展示它.import torch import matplotlib.pyplot as plt x torch.unsqueeze torch.lindpace 1,1...