Eli*_*eth 2 python documentation function pytorch
当给定范围 -1 和 1 之间的指数参数时,torch.pow() 返回 nan
a = torch.randn(1,3)
a
>> tensor([[-1.7871, -0.5375, -0.1164]])
torch.pow(a, 2) #or a**2
>> tensor([[3.1938, 0.2889, 0.0136]])
torch.pow(a,0.5) #or a**0.5
>> tensor([[nan, nan, nan]])
Run Code Online (Sandbox Code Playgroud)
期望结果:
tensor([[-1.3368, -0.7331, -0.3412]])
Run Code Online (Sandbox Code Playgroud)
编辑:事实证明 ** 也以同样的方式工作。a**2对张量执行与 相同的操作torch.pow(a,2)。 a**0.5像 torch.pow 一样返回 nan 。
问题在于负数的平方根是非实复数。
如果你想保留符号并取其绝对值的平方根,下面的代码可以解决问题
torch.sign(a) * torch.pow(torch.abs(a), 0.5)
Run Code Online (Sandbox Code Playgroud)