我得到一个令人困惑的错误,我不知道为什么会发生。这就是我得到的错误:
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
,即使两个操作数都是整数类型,输出0.5
也不是。我猜Pytork只是禁止这样做要解决此问题,请首先将输入
deg
转到float:或在
pow
中传递-1.
:相关问题 更多 >
编程相关推荐