pytorch冻结权重并更新参数组

2024-05-23 14:36:26 发布

您现在位置:Python中文网/ 问答频道 /正文

用于param_groups设置的pytorch中的冷冻砝码。

所以,如果你想在训练中冻结体重:

for param in child.parameters():
    param.requires_grad = False

还必须更新优化器以不包括非渐变权重:

optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters()), lr=opt.lr, amsgrad=True)

如果要使用不同的weight_decay/学习率作为偏差和权重/这也允许不同的学习率:

param_groups = [{'params': model.module.bias_parameters(), 'weight_decay': args.bias_decay},
                {'params': model.module.weight_parameters(), 'weight_decay': args.weight_decay}]

定义了dics的param_groupsalist

optimizer = torch.optim.Adam(param_groups, args.lr,
                                 betas=(args.momentum, args.beta))

如何通过冻结单个重量来实现这一点?在dic列表上运行filter,或者有没有一种方法可以将张量单独添加到优化器中?


Tags: modelparamargstorchoptimoptimizergroups权重