使用unsup_graphsage进行多次推理时报错

开发者您好 我在使用Cogdl训练好的unsup_graphsage对多个图进行推理时出现了越界的问题
我认为是sage_layer.py中MeanAggregator没有释放上一个Graph的邻接矩阵导致的memory leak
下面是我的分析过程


Graph1的信息

row_normalization过程的信息 row col均为(17746,) 源自Graph1邻接矩阵


Graph2的信息
image

之后对Graph2 forward,在get_degrees中scatter_add_出现越界情况 这里row col同样是上一张图的(17746,) 这肯定有问题 :smiling_face_with_tear: row中超过节点数的索引导致了问题


但是Graph2单独推理是没问题的 如下图在之前报错位置一切正常 最后能够返回结果
所以我认为上一张图的邻接矩阵没有被释放导致的错误 但是不知道如何去改动

代码和数据 链接: 百度网盘 请输入提取码 提取码: 8woc
我是cogdl 0.5.3 CPU环境

抱歉 提供的代码中logger忘记上传 可以注释掉
# author_emb = model(item)解除注释来复现多次forward产生的错误

0.5.3版本在取采样后图egde_index_sp的时候,self.adjlist会保存图的采样edge_index,

故同一个model多次推理时使用了上个图的edge_index,在unsup_graphsage.py里如此处理即可

1 个赞

感谢回复 问题顺利解决了~