Python 负功率的功率产生误差?
我得到一个令人困惑的错误,我不知道为什么会发生。这就是我得到的错误:Python 负功率的功率产生误差?,python,pytorch,Python,Pytorch,我得到一个令人困惑的错误,我不知道为什么会发生。这就是我得到的错误: torch.Size([24047]) tensor([1315, 1318, 1472, 1454, 1318, 1337, 1453, 1454, 1317, 1310]) Traceback (most recent call last): ... deg_inv = deg.pow(-1) RuntimeError: Integers to negative integer powers are no
torch.Size([24047])
tensor([1315, 1318, 1472, 1454, 1318, 1337, 1453, 1454, 1317, 1310])
Traceback (most recent call last):
...
deg_inv = deg.pow(-1)
RuntimeError: Integers to negative integer powers are not allowed.
这是代码的一部分:
from torch_scatter import scatter_add
from torch_geometric.utils import add_remaining_self_loops, add_self_loops, remove_self_loops
...
if edge_weight ==None:
edge_weight = torch.ones((edge_index.size(1), ), dtype=dtype,
device=edge_index.device)
fill_value = 1
edge_index, edge_weight = add_self_loops(
edge_index, edge_weight, fill_value, num_nodes)
row, col = edge_index
deg = scatter_add(edge_weight, row, dim=0, dim_size=num_nodes)
print(deg.size())
print(deg[:10])
deg_inv = deg.pow(-1)
我没有在网上找到任何与此相关的内容。我不确定为什么会发生这种情况?您的
deg
张量存储为int
类型。相当合理的是,如果您在整数类型张量之间执行二进制操作,则假定您仍应获得整数输出。但是,对于pow
,如果输入是2
,而幂是-1
,即使两个操作数都是整数类型,输出也不是。我猜Pytork只是禁止这样做
要解决此问题,请先将输入deg
旋转为浮动:
deg = deg.float()
deg_inv = deg.pow(-1)
或在pow
中通过-1.
:
deg_inv = deg.pow(-1.)
非常感谢。你知道为什么
scatter\u add
返回一个int
张量吗?在docs()中的示例中,返回类型是一个FloatTensor
,但似乎没有任何明显的区别。@VictorM是您的edge\u weight
也是int
类型?@VictorM还有,在您提供的链接中,它的示例代码段用torch.Tensor
初始化src
,默认情况下,即使您写入整数,它也是浮动32;不像torch.tensor
,如果你写整数,它就是int64
,