随手笔记前言
dgl-cuda11.6(0.9.1版本)利用scipy.sparse,新建异构图
一、写该随手目的?
dgl从0.4.1以后的版本之后,就不能利用稀疏矩阵和Networkx新建异构图了。现随笔记录下如何用的版本,利用sparse添加异构图。
二、随手笔记内容
1.代码
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'
# 使用DGL构建二分图
import dgl
import torch
import networkx as nx
from scipy.sparse import coo_matrix
import scipy
import matplotlib.pyplot as plt
# dgl.from_scipy()
# dgl.from_networkx()
from scipy.sparse import csr_matrix
spg = scipy.sparse.random(4, 5, density=0.3)
print(spg)
print(torch.tensor(spg.row))
print(torch.tensor(spg.col))
print(torch.tensor(spg.data))
print('----------------')
print(spg.T)
# g1 = dgl.bipartite_from_scipy(spg, utype='A', etype='AB', vtype='B', eweight_name='W1')
# g2 = dgl.bipartite_from_scipy(spg.T, utype='B', etype='BA', vtype='A', eweight_name='W2')
# print(g1.canonical_etypes[0])
# print(g1.srcnodes('A'))
# print(g1.dstnodes('B'))
# print(g1.edges['AB'].data['W1'])
#
# print(g2.canonical_etypes[0])
# print(g2.srcnodes('B'))
# print(g2.dstnodes('A'))
# print(g2.edges['BA'].data['W2'])
hg = dgl.heterograph({
('A', 'AB', 'B'): (torch.tensor(spg.row), torch.tensor(spg.col)),
('B', 'BA', 'A'): (torch.tensor(spg.T.row), torch.tensor(spg.T.col))
})
hg.edges['AB'].data['W1'] = torch.tensor(spg.data)
hg.edges['BA'].data['W2'] = torch.tensor(spg.T.data)
print(hg)
2.展示结果
总结
以上为dgl-cuda11.6(0.9.1版本)利用scipy.sparse,新建异构图