发布网友 发布时间:2022-04-21 09:45
共1个回答
热心网友 时间:2022-05-22 01:16
pytorch中这段代码的意思是把学习率learning_rate设为0.000001
但是设置学习率不是给learning_rate赋值就可以完成的,
在pytorch中设置learning_rate有六种方法(这里的LR就是LearningRate的缩写)
1等步长间隔调整学习率
optim.lr_scheler.StepLR(optimizer, step_size, gamma=0.1, last_epoch=-1)
2cosine学习率
optim.lr_scheler.CosineAnnealingLR(optimizer, T_max, eta_min=0)
3指数衰减学习率
optim.lr_scheler.ExponentialLR(optimizer, gamma, last_epoch=-1)
4自适应调整学习率
optim.lr_scheler.ReceLROnPlateau(optimizer, mode='min', factor=0.1, patience=10,verbose=False, threshold=1e-4, threshold_mode='rel',cooldown=0, min_lr=0, eps=1e-8)
5非等间隔调整学习率
optim.lr_scheler.MultiStepLR(optimizer, milestones, gamma=0.1, last_epoch=-1)
6自定义网络层隔学习率
optim.lr_scheler.LambdaLR( optimizer, lr_lambda, last_epoch=-1)
我给你一个等步长间隔调整学习率的例子,你看看吧
import torch
import torch.optim as optim
from torch.optim import lr_scheler
from torchvision.models import AlexNet
model = AlexNet(num_classes=2)
optimizer = optim.SGD(params = model.parameters(), lr=0.05)
#每10次迭代,lr = lr * gamma
scheler = lr_scheler.StepLR(optimizer, step_size=10, gamma=0.1)
for epoch in range(40):
scheler.step()
lr = scheler.get_lr()
print(epoch, scheler.get_lr()[0])
源代码(注意源代码的缩进)