Pytorch——训练时,冻结网络部分参数的方法_pytorch冻结一部分参数-优快云博客
一、核心实现代码
xxx.requires_grad = False
要固定训练网络的哪几层,只需要找到这几层参数(parameter)
然后将其 .requires_grad
属性设置为 False
。
然后修改优化器
,只将不被冻结的层传入。
二、目的
- 节省显存:不将不更新的参数传入optimizer
- 提升速度:将不更新的参数的requires_grad设置为False,节省了计算这部分参数梯度的时间
三、冻结+验证
# 冻结整个网络
for param in self.backbone.parameters():
param.requires_grad = False
# 查看冻结参数与否:
for name, param in self.backbone.named_parameters():
print(name, param.requires_grad)
False 表示已经冻结