pytorch 中 构造一个优化器对象,维护当前状态,并基于梯度进行参数更新。 可以分层制定学习率 利用模型反向传播得到的梯度进行模型优化。pytorch 提供了两种方法 一些需要多次计算梯度的算法采用这种方法实现模型优化。 3. 根据 epoch 调整学习率 torch.optim.lr_scheduler 给定的优化器对象中有需要更新的参数组和对应的学习率,每 每个epoch都进行学习率更新torch.optim
包中给出了许多优化算法的实现,我们只需调用相应的 API 就能完成模型优化。我们现在人工智能学习优化往往是基于梯度来进行模型优化的,不断的调整参数获取最优解,每次调整的幅度称之为步长或学习率。在 pytorch 中还提供了许多学习率更新的方法。optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
optimizer = optim.Adam([var1, var2], lr=0.0001)
optim.SGD([
{'params': model.base.parameters()},
{'params': model.classifier.parameters(), 'lr': 1e-3}
], lr=1e-2, momentum=0.9)
# base 学习率为 1e-2
# classifier 学习率为 1e-3
更多优化算法可查阅官网 优化算法
optimizer.step()
方法for input, target in dataset:
optimizer.zero_grad()
output = model(input)
loss = loss_fn(output, target)
loss.backward()
optimizer.step()
optimizer.step(closure)
方法for input, target in dataset:
def closure():
optimizer.zero_grad()
output = model(input)
loss = loss_fn(output, target)
loss.backward()
return loss
optimizer.step(closure)
torch.optim.lr_scheduler.StepLR(*optimizer*, *step_size*, *gamma=0.1*, *last_epoch=- 1*, *verbose=False*)
step_size
个 epochs
学习率乘gamma
。python
# Assuming optimizer uses lr=0.05 for all groups
# lr=0.05 if epoch < 30
# lr=0.005 if 30 <=epoch < 60
# lr=0.0005 if 60 <=epoch < 90
# ...
scheduler = StepLR(optimizer, step_size=30, gamma=0.1)
for epoch in range(100):
train(...)
validate(...)
scheduler.step() # 执行此步完成学习率更新
torch.optim.lr_scheduler.ExponentialLR(*optimizer*, *gamma*, *last_epoch=- 1*, *verbose=False*)
更多更新策略可查阅官网 如何调整学习率
创客课程开发的每个主题课程需要基于现实情景,设置学习探究任务,通过问题研究、任务...
创客空间建设 能够给人们分享各种乐趣,通过电脑,技术,科学,艺术结合,设计创造一...
在了解创客教育之前,我们首先了解下何为创客。创客是一群喜欢或享受创新的人。创客跨...
STEAM教育是对传统教育的提升,它是基于自然学校方式的功能性框架,可以适合各类...