问题描述
我运行了一个在github中找到的项目,并遇到"IndexError: Dimension out of range (expected to be in range of [-1,0],but got -2)".
此错误与torch_geometric.nn模块中的 Class messagepassing()有关。
源代码来自https://pytorch-geometric.readthedocs.io/en/latest/_modules/torch_geometric/nn/conv/message_passing.html#MessagePassing.propagate
def __collect__(self,args,edge_index,size,kwargs):
i,j = (1,0) if self.flow == 'source_to_target' else (0,1)
out = {}
for arg in args:
if arg[-2:] not in ['_i','_j']:
out[arg] = kwargs.get(arg,Parameter.empty)
else:
dim = 0 if arg[-2:] == '_j' else 1
data = kwargs.get(arg[:-2],Parameter.empty)
if isinstance(data,(tuple,list)):
assert len(data) == 2
if isinstance(data[1 - dim],Tensor):
self.__set_size__(size,1 - dim,data[1 - dim]) # this is the problem
data = data[dim]
if isinstance(data,Tensor):
self.__set_size__(size,dim,data)
data = self.__lift__(data,j if arg[-2:] == '_j' else i)
out[arg] = data
关于自身。 set_size ()函数:
def __set_size__(self,size: List[Optional[int]],dim: int,src: Tensor):
the_size = size[dim]
if the_size is None:
size[dim] = src.size(self.node_dim)
elif the_size != src.size(self.node_dim):
raise ValueError(
(f'Encountered tensor with size {src.size(self.node_dim)} in '
f'dimension {self.node_dim},but expected size {the_size}.'))
我不确定是否是有关数据的问题。如果您知道这种情况有什么问题,请帮助我。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)