Python 3.x 如何将pytorch中模型中的每个参数的require_grad更改为false?
我的代码在下面,我想它可以做我想要的,但是输出显示require\u grad没有变为falsePython 3.x 如何将pytorch中模型中的每个参数的require_grad更改为false?,python-3.x,pytorch,Python 3.x,Pytorch,我的代码在下面,我想它可以做我想要的,但是输出显示require\u grad没有变为false import torch import torch.nn as nn encoder = nn.Sequential( nn.Conv2d(1, 4, 1), nn.Sigmoid()) for params in encoder.parameters(): params.require_grad = False print(params.requires_grad) # pr
import torch
import torch.nn as nn
encoder = nn.Sequential( nn.Conv2d(1, 4, 1), nn.Sigmoid())
for params in encoder.parameters():
params.require_grad = False
print(params.requires_grad) # prints two True statements?
我做错了什么?您只是有一个输入错误:)只需在参数中的grad末尾添加一个s.require\u grad=False
将此更改为params.requires_grad=False
(注意添加的)
拼写错误有时很难被发现;) 感谢您,而且params.require_grad=False不会返回任何错误,因为您分配了一个新属性,这使得调试更加困难。为什么不将
与torch一起使用呢。no_grad():
?我的目标是使用/训练网络的一部分,因此我希望首先冻结80%的层。在某个时代之后,我可以解锁更多层。我想我可以使用torch.no_grad()包装器,通过设置require_grad=True,逐个解锁卷积。