Pytorch 如何訓練網路時調整學習率

2022-09-25 13:27:13 字數 1261 閱讀 2993

為了得到更好的網路,學習率通常是要調整的,即剛開始用較大的學習率來加快網路的訓練,之後為了提高精確度,需要將學習率調低一點。

如圖所示,步長(學習率)太大容易跨過最優解。

表示每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...