普通邻接矩阵转换成edge_index的COO稀疏矩阵形式,格式为[2, num_messages]

普通邻接矩阵转换成edge_index的COO稀疏矩阵形式,格式为[2, num_edges]。
平时我们接触的邻接矩阵adj的形式要么是稠密矩阵(原始二维矩阵),但是在使用PyG框架的时候会发现格式不对,需要形式为[2, edges]的coo_matrix。

首先,把adj转为普通的coo_matrix矩阵:

adj = sp.coo_matrix(adj)

(0, 633) 1
(0, 1862) 1
(0, 2582) 1
(0, 2) 1
. .
. .
(2707, 165) 1
(2707, 598) 1
(2707, 1473) 1
(2707, 2706) 1
#。。。。。。。。。#
接下来:

values = adj.data  
indices = np.vstack((adj.row, adj.col))  # 我们真正需要的coo形式
adj = torch.LongTensor(indices)  # PyG框架需要的coo形式

就转化成了[2, edges]的格式:

adj:<class'torch.Tensor'>tensor([[ 0, 0, 1, ...,17713, 17714, 17715],
	[ 1, 2, 0, ...,15054, 2737, 3434]])

你可能感兴趣的:(python,矩阵,深度学习)