指数小于 1 的 PyTorch 数学返回 nan 's

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 。

Sio*_*Goh 6

问题在于负数的平方根是非实复数。

如果你想保留符号并取其绝对值的平方根,下面的代码可以解决问题

torch.sign(a) * torch.pow(torch.abs(a), 0.5)
Run Code Online (Sandbox Code Playgroud)