我使用LambdaLR
作为学习率函数:
import torch
import torch.nn as nn
import matplotlib.pyplot as plt
model = torch.nn.Linear(2, 1)
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
lambda1 = lambda epoch: 0.99 ** epoch
scheduler = torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lambda1, last_epoch = -1)
lrs = []
for i in range(2001):
optimizer.step()
lrs.append(optimizer.param_groups[0]["lr"])
scheduler.step()
plt.plot(lrs)
我正在尝试设置一个最小学习速率,这样它就不会变为0。我该怎么做
新的学习率总是这样计算的:
初始学习率指的是第一个,而不是最后一个
这意味着我们可以写:
然后当
INITIAL_LEARNING_RATE * (0.99 ** epoch)
变得太小时your_min_lr
返回,因为INITIAL_LEARNING_RATE * your_min_lr / INITIAL_LEARNING_RATE
正好等于your_min_lr
相关问题 更多 >
编程相关推荐