我试图更好地理解 pytorch 中的反向传播。我有一个代码片段,它成功地从输出 d 反向传播到叶变量 a,但是如果我添加一个重塑步骤,反向传播不再给输入一个梯度。
我知道 reshape 不合适,但我仍然不确定如何将其置于上下文中。
有什么想法吗?
谢谢。
#Works
a = torch.tensor([1.])
a.requires_grad = True
b = torch.tensor([1.])
c = torch.cat([a,b])
d = torch.sum(c)
d.backward()
print('a gradient is')
print(a.grad) #=> Tensor([1.])
#Doesn't work
a = torch.tensor([1.])
a.requires_grad = True
a = a.reshape(a.shape)
b = torch.tensor([1.])
c = torch.cat([a,b])
d = torch.sum(c)
d.backward()
print('a gradient is')
print(a.grad) #=> None