Pytorch Lightning(可训练的参数 - 错误)
我正在使用Pytorch Lightning进行多GPU培训。下面的输出显示模型:
GPU available: True, used: True
TPU available: False, using: 0 TPU cores
IPU available: False, using: 0 IPUs
HPU available: False, using: 0 HPUs
LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1,2,3]
┏━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓
┃ ┃ Name ┃ Type ┃ Params ┃
┡━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩
│ 0 │ encoder │ Encoder │ 2.0 M │
│ 1 │ classifier │ Sequential │ 8.8 K │
│ 2 │ criterion │ BCEWithLogitsLoss │ 0 │
│ 3 │ train_acc │ Accuracy │ 0 │
│ 4 │ val_acc │ Accuracy │ 0 │
│ 5 │ train_auc │ AUROC │ 0 │
│ 6 │ val_auc │ AUROC │ 0 │
│ 7 │ train_f1 │ F1Score │ 0 │
│ 8 │ val_f1 │ F1Score │ 0 │
│ 9 │ train_mcc │ MatthewsCorrCoef │ 0 │
│ 10 │ val_mcc │ MatthewsCorrCoef │ 0 │
│ 11 │ train_sens │ Recall │ 0 │
│ 12 │ val_sens │ Recall │ 0 │
│ 13 │ train_spec │ Specificity │ 0 │
│ 14 │ val_spec │ Specificity │ 0 │
└────┴────────────┴───────────────────┴────────┘
Trainable params: 2.0 M
Non-trainable params: 0
我将编码器设置为无法使用以下代码来实现:
ckpt = torch.load(chk_path)
self.encoder.load_state_dict(ckpt['state_dict'])
self.encoder.requires_grad = False
不应可训练的参数
be 8.8 K
而不是 2.0 m ?
我的优化器如下:
optimizer = torch.optim.RMSprop(filter(lambda p: p.requires_grad, self.parameters()), lr =self.lr, weight_decay = self.weight_decay)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
self.encoder.requires_grad = false
什么都不做;实际上,火炬模块没有需要
flag。第二个下划线),该方法将为本模块的所有参数设置
需要
您应该做的是使用
oneques_grad _
方法(请注意 : _self.encoder.requires_grad = False
doesn't do anything; in fact, torch Modules don't have arequires_grad
flag.What you should do instead is use the
requires_grad_
method (note the second underscore), that will setrequires_grad
for all the parameters of this module to the desired value:as described here: https://pytorch.org/docs/stable/generated/torch.nn.Module.html#torch.nn.Module.requires_grad_
您需要设置
onegres_grad = false
for Angoder参数一对一:You need to set
requires_grad=False
for all encoder parameters one-by-one:请注意,如果您执行以下代码:
您将获得:
这实际上不是该层中参数的停用
需要
requiens_grad
。因此,您有两个选择,请根据(您需要看到:
您需要设置
requales_grad
<代码> false false for所需的特定层中的所有参数要停用Notice that if you execute the following piece of code:
You will get:
which means that this is actually not deactivating
requires_grad
for the parameters in that layer. So, you have two option according to (https://pytorch.org/docs/stable/notes/autograd.html#setting-requires-grad).requires_grad_()
to a module as suggested by @burzam (the more correct one)you will see:
You need to to set
requires_grad
toFalse
for all the parameters in the specific layers you want to deactivate