【问题标题】:How do you change require_grad to false for each parameters in your model in pytorch?如何在 pytorch 中将模型中的每个参数的 require_grad 更改为 false?
【发布时间】:2018-08-02 02:20:37
【问题描述】:

我的代码低于我认为会做我想做的事,但输出显示 require_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) # prints two True statements?

我做错了什么?

【问题讨论】:

  • 为什么不使用with torch.no_grad():
  • 我的目标是使用/训练网络的一部分,所以我想先冻结 80% 的层。在某个时期之后,我可以解锁更多层。我想我可以使用 torch.no_grad() 包装器并通过设置 require_grad = True 来逐个解锁卷积。

标签: python-3.x pytorch


【解决方案1】:

你只是打错了 :) 只需在 params.require_grad = False 的 grad 末尾添加一个 s

将此更改为params.requires_grad = False(注意添加的s)

有时很难发现拼写错误;)

【讨论】:

  • 谢谢,而且 params.require_grad = False 不会返回任何错误,因为您分配了一个新属性,这使得调试变得更加困难。
猜你喜欢
  • 2021-09-22
  • 1970-01-01
  • 2020-04-14
  • 2018-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-24
  • 2021-07-04
相关资源
最近更新 更多