我很困惑
我的模型输出:
tensor([[0.0000,0.1537],...],grad_fn=<ReluBackward0>)
如果我使用print(output.grad)
,它会给我None
,但即使在使用
loss.backward()
我得到了同样的结果,同样是None
即使
with torch.set_grad_enabled(True):
补充说,还是一样
我现在尝试了多种型号的变体,总是一样的
我用我的模型取得了很好的效果,似乎没有问题,现在我看到了这一点,我不确定是否有一个我至今没有认识到的重大缺陷。 但是我的模型在学习,它在改进,所以我想它必须要改进吗
为什么我得到的是一个实际值而不是一个零
因为渐变只存储在叶张量的
.grad
属性上,所以得到的是None
。这些张量在计算图中没有父张量可以使用^{} 检查张量是否为叶:
您打印的张量显示
grad_fn=<ReluBackward0>
,表明它是ReLU层的结果,因此不是叶张量下面是一个非叶张量的示例:
请注意
z
将显示为tensor(6., grad_fn=<SumBackward0>)
实际访问
.grad
将发出警告:如果要访问非叶张量上的渐变,请遵循警告消息:
相关问题 更多 >
编程相关推荐