为什么 torch.gt 函数会requires_grad变成假?



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

但是,张量erequires_grad为真。我仍然可以在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

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

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

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

相关内容

  • 没有找到相关文章

最新更新