Skip to main content
 首页 » 编程设计

python之为什么 torch.gt 函数将 requires_grad 变成 False

2024年11月01日33kerrycode

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

但是,张量 e 的 requires_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 

请您参考如下方法:

我假设这是因为你不能采用大于运算的梯度。返回类型是 bool 值:

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

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