小编Dec*_*yde的帖子

pytorch中的retain_grad()如何工作?我发现它的位置改变了毕业结果

在 pytorch 中的一个简单测试中,我想查看非叶张量中的 grad,因此我使用retain_grad():

import torch
a = torch.tensor([1.], requires_grad=True)
y = torch.zeros((10))
gt = torch.zeros((10))

y[0] = a
y[1] = y[0] * 2
y.retain_grad()

loss = torch.sum((y-gt) ** 2)
loss.backward()
print(y.grad)
Run Code Online (Sandbox Code Playgroud)

它给了我一个正常的输出:

tensor([2., 4., 0., 0., 0., 0., 0., 0., 0., 0.])
Run Code Online (Sandbox Code Playgroud)

但是当我在 y[1] 之前和 y[0] 分配之后使用保留 grad() 时:

import torch
a = torch.tensor([1.], requires_grad=True)
y = torch.zeros((10))
gt = torch.zeros((10))

y[0] = a
y.retain_grad()
y[1] = y[0] * 2

loss = torch.sum((y-gt) ** 2)
loss.backward()
print(y.grad)
Run Code Online (Sandbox Code Playgroud)

现在输出更改为:

tensor([10., …
Run Code Online (Sandbox Code Playgroud)

python pytorch

12
推荐指数
1
解决办法
6014
查看次数

标签 统计

python ×1

pytorch ×1