最近跑ogb-examples发现了一点小问题记录一下
1. tensor.div(‘rounding_floor’)
向下整除出现问题,这个关键字不匹配
检索位置是 在 torch_geometric/utils/negative_sampling中
div是除法,且在本地jupyter没有报错,服务器这边出现这个问题
解决办法:修改这个包了,先进行除法,再进行向下取整
2. long tensor类型错误
这里是跑gae的时候,代码还是采用了 negative_sampling来生成链接预测的负边。因此出现问题,和问题1一样定义到这个包的源代码,发现这里返回的类型是tensor,因此强制转换
解决
3. 顺手记录一下 gae的gpu-usage
3.1 Cora
3.2 CiteSeer
3.3 PubMed
3.4 ogbn-arxiv
4.GAE pyg
PyG的gae是实现了两个版本,之前一直只认为就是一种, encoder得到Z,Z和Z转置求得内积
这里还有一个版本,不是重构出整个矩阵,给定一部分 正边对。通过edge_index重构出部分边,还有个就是重构整个A
重构损失 通过decoder(InnerDecoder)来计算
GPU的使用都不是很多,如果不采用这种直接重构邻接矩阵 (或者像最初两个矩阵直接相减naive,可能就是导致cudaout memory的原因,pyG这里rencon调用的decoder 计算pos和neg ,因此没有实现 forward_all 的那种损失计算
5. pyG 稀疏张量的访问方法
a._indices() 和a._values()
COO稀疏张量又可以分为两种:uncoalesced和coalesced。其中uncoalesced允许同一个索引下存在多个不同的值(相同的边有多个值),而coalesced则不行
判断稀疏张量是哪种类型
下面的两种方法 是a.indices() a.values() 是coalesced 稀疏张量的方法,因此若想用 则先把 uncoalesced的稀疏张量转为.coalesce() 再用,或者采用 a._indices()
都是10这个位置的值,坐标相同是 uncoalesce的 转化为coalesce, 两个相同index的值 加起来了