python - 为什么 torch.gt 函数将 requires_grad 变为 False?
问题描述
requires_grad
张量的b
和c
是True
。但是requires_grad
张量d
的 是False
。我很好奇为什么会发生这种变化,因为所有requires_grad
输入都是 True。
然而,requires_grad
张量e
的 为真。我还可以backward()
继续e
。但是这种方式有错误吗?
我正在使用 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]])
而减号或其他算术运算返回另一个数字。
推荐阅读
- python - KeyError: 'this' ,为什么会发生这个错误?
- php - 检查车辆是否在 PHP 中可用
- html - 如何将 id 从 jquery 传递到任何 div 类?
- c - 用 SDL 和 C 模糊整个屏幕
- python - 在 xml.etree.ElementTree 中多次使用单引号
- python - 使用 Python 请求库抓取数据时的奇怪响应
- reactjs - 如果设置取决于公司 ID,在哪里以及如何设置 API 中的项目列表?(反应,redux,redux-thunk)
- flutter - 颤振:如何通过单击“+”图标将商品添加到购物车中?
- sql - SELECT WHERE 多条记录不存在
- google-sheets - 无法弄清楚为什么这个 summif 语句不起作用