【问题标题】:Why does torch.gt function turn requires_grad into False?为什么 torch.gt 函数将 requires_grad 变为 False?
【发布时间】:2019-09-09 12:40:15
【问题描述】:

张量bcrequires_gradTrue。但是张量drequires_gradFalse。我很好奇为什么会发生这种变化,因为所有 requires_grad 的输入都是 True。

但是,张量 erequires_grad 是 True。我仍然可以在e 上做backward()。但是这种方式有错误吗?

我正在使用 Python3.7 和 Pytorch1.1。

import torch
import torch.nn as nn

net = nn.Conv2d(1, 1, 3, padding=1)
a = torch.randn(1, 1, 10, 10)
b = net(a)
c = net(b)

d = torch.gt(b, c)

e = b - c
e[e > 0] = 1.0
e[e < 0] = 0.0

【问题讨论】:

    标签: python pytorch


    【解决方案1】:

    我认为这是因为您不能采用大于运算的梯度。返回类型是布尔值:

    >>> torch.gt(torch.tensor([[1, 2], [3, 4]]), torch.tensor([[1, 1], [4, 4]]))
    tensor([[False, True], [False, False]])
    

    而减号或其他算术运算返回另一个数字。

    【讨论】:

      猜你喜欢
      • 2021-01-10
      • 2022-08-14
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 2019-10-24
      相关资源
      最近更新 更多