调整学习率
PyTorch已经在torch.optim.lr_scheduler为我们封装好了一些动态调整学习率的方法。调用方法如下:
# 选择一种优化器
optimizer = torch.optim.Adam(...)
# 选择上面提到的一种或多种动态调整学习率的方法
scheduler1 = torch.optim.lr_scheduler....
scheduler2 = torch.optim.lr_scheduler....
...
schedulern = torch.optim.lr_scheduler....
# 进行训练
for epoch in range(100):
train(...)
validate(...)
optimizer.step()
# 需要在优化器参数更新之后再动态调整学习率
scheduler1.step()
...
schedulern.step()
也可通过自定义函数来定义学习率变化。
微调
修改指定层,其余参数不变
# 冻结原预训练模型的参数
def set_parameter_requires_grad(model, feature_extracting):
if feature_extracting:
for param in model.parameters():
param.requires_grad = False
import torchvision.models as models
# 冻结参数的梯度
feature_extract = True
# 加载预训练好的模型
model = models.resnet18(pretrained=True)
set_parameter_requires_grad(model, feature_extract)
# 输出部分的全连接层
num_ftrs = model.fc.in_features
model.</

最低0.47元/天 解锁文章
221

被折叠的 条评论
为什么被折叠?



