gpt4 book ai didi

python - Pytorch:无法在需要 grad 的变量上调用 numpy()。使用 var.detach().numpy() 代替

转载 作者:行者123 更新时间:2023-12-04 13:56:25 29 4
gpt4 key购买 nike

我的代码中有一个错误,我尝试以任何方式都没有得到修复。

错误很简单,我返回一个值:

torch.exp(-LL_total/T_total)

然后在管道中得到错误:
RuntimeError: Can't call numpy() on Variable that requires grad. Use var.detach().numpy() instead.
cpu().detach().numpy()等解决方案给出同样的错误。

我怎么能修好呢?谢谢。

最佳答案

错误重现

import torch

tensor1 = torch.tensor([1.0,2.0],requires_grad=True)

print(tensor1)
print(type(tensor1))

tensor1 = tensor1.numpy()

print(tensor1)
print(type(tensor1))
这导致 tensor1 = tensor1.numpy() 行完全相同的错误:
tensor([1., 2.], requires_grad=True)
<class 'torch.Tensor'>
Traceback (most recent call last):
File "/home/badScript.py", line 8, in <module>
tensor1 = tensor1.numpy()
RuntimeError: Can't call numpy() on Variable that requires grad. Use var.detach().numpy() instead.

Process finished with exit code 1
通用解决方案
这是在您的错误消息中向您建议的,只需替换 var用你的变量名
import torch

tensor1 = torch.tensor([1.0,2.0],requires_grad=True)

print(tensor1)
print(type(tensor1))

tensor1 = tensor1.detach().numpy()

print(tensor1)
print(type(tensor1))
按预期返回
tensor([1., 2.], requires_grad=True)
<class 'torch.Tensor'>
[1. 2.]
<class 'numpy.ndarray'>

Process finished with exit code 0
一些解释
您需要将您的张量转换为另一个除了其实际值定义之外不需要梯度的张量。这个其他张量可以转换为一个 numpy 数组。参见 this discuss.pytorch post . (我认为,更准确地说,需要这样做才能从其 pytorch Variable 包装器中获取实际张量,参见 this other discuss.pytorch post )。

关于python - Pytorch:无法在需要 grad 的变量上调用 numpy()。使用 var.detach().numpy() 代替,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55466298/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com