邻接矩阵在pytorch_geometric库中的作用是提取edge_index和edge_attr吗,图的逻辑结构为多对多,图没有顺序存储结构,但可以借助二维数组来表示元素间的关系,即数组表示法(邻接矩阵)。图的链式存储结构可以用多重链表来描述,如邻接表,邻接多重表以及十字链表等。邻接矩阵
首先,我们可以根据已知的 edge_index 创建一个邻接矩阵 adj_matrix,用于表示节点之间的连接关系。接下来,我们可以编写一个递归函数 get_parent_edges,该函数的输入参数为当前节点的索引,输出为检索到的父节点到子节点的 edge_index。 import torch def get_parent_edges(node_idx, adj_matrix, parent_edges=None)...
这里将节点特征x、标签y和边的索引edge_index组合到一个Data对象中。 """Data"""importtorchfromtorch_geometric.dataimportDatax=torch.tensor([[2,1],[5,6],[3,7],[12,0]])y=torch.tensor([0,1,0,1])edge_index=torch.tensor([[0,1,2,3,0],[1,0,1,2,3]],dtype=torch.long)data=Data(...
optimizer.zero_grad() out = model(data.x, data.edge_index) loss = criterion(out[data.train_mask], data.y[data.train_mask]) loss.backward() optimizer.step() return loss def test(): model.eval() out = model(data.x, data.edge_index) pred = out.argmax(dim=1) test_correct = pred...
edge_index, edge_weight, x.size(self.node_dim)) # 对图结构进行标准化,预处理相当于在forward中实现 x = self.lin(x) # XW out = self.propagate(edge_index, x=x, edge_weight=edge_weight, size=None)#★ # self.propagate()继承自MessagePassing这个类 ...
edge_index = torch.LongTensor( [[0, 0, 0, 1, 2, 1, 2, 3], [1, 2, 3, 2, 3, 5, 4, 6]]) edge_index = to_undirected(edge_index) adj = SparseTensor(row=edge_index[0], col=edge_index[1], sparse_sizes=(7, 7)) ...
return edge_index edge_index = load_edge_csv(path=os.path.join(data_dir, "musae_facebook_edges.csv"), src_index_col="id_1", dst_index_col="id_2") 得到了一个长度为2的PyTorch张量,一个用于源节点,另一个用于目标节点,总计171,002条边。
edge_index=torch.tensor([# 这里表示节点0和1有连接,因为是无向图 # 那么1和0也有连接 # 上下对应着看[0,1,1,2],[1,0,2,1],],# 指定数据类型 dtype=torch.long)# 节点的属性信息 x=torch.tensor([# 三个节点 # 每个节点的属性向量维度为1[-1],[0],[1],])# 实例化为一个图结构的数据 ...
Function和Function之间通过next_edge接口连接在一起,你可以使用add_next_edge()来向Function添加一个edge, 通过next_edge(index)获取对应的edge,通过next_edges()方法获得迭代edge的迭代器。每一个Function都有一个sequence number,随着Function实例的不断构建而单调增长。你...
(data_scaled, self.n_node, n_window, edge_index, edge_attr)return sequencesdef _create_edges(self, n_node):edge_index = torch.zeros((2, n_node**2), dtype=torch.long)edge_attr = torch.zeros((n_node**2, 1))num_edges...