指数小于1的pytorch数学return nan

torch.pow()在给出范围-1和1之间的指数参数时返回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]])

预期结果:

tensor([[-1.3368,-0.7331,-0.3412]])

编辑:结果表明**的工作方式也相同。 a**2的张量与torch.pow(a,2)的作用相同。 a**0.5返回nan,就像torch.pow一样。

hbfym 回答:指数小于1的pytorch数学return nan

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

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

torch.sign(a) * torch.pow(torch.abs(a),0.5)
本文链接:https://www.f2er.com/3130021.html

大家都在问