1.首先要下载pytorch geometric包

详见:快速下载pytorch_geometric

2.了解数据定义格式

2.1 torch_geometric.data.Data

torch_geometric.data.Data 是 torch_geometric 库中用于表示图数据结构的一个核心类。

1. 基本作用

在图神经网络(Graph Neural Networks,GNNs)领域,需要处理各种类型的图数据,包括节点特征、边信息、图的标签等不同元素。torch_geometric.data.Data 类的作用就是将这些分散的图数据组件整合在一起,形成一个统一的数据对象,便于在构建、训练和评估图神经网络模型时进行数据传递、操作以及与各种 GNN 层进行交互。

2. 包含的主要属性及含义

from torch_geometric.data import Data
data = Data(x=x, edge_index=edge_index, y=y, ...)
  • x:这个属性用于存储节点特征矩阵。它是一个二维的 torch.Tensor,形状通常为 [num_nodes, num_node_features],其中 num_nodes 表示图中节点的数量,num_node_features 表示每个节点所具有的特征维度数量。
  • edge_index:用于存储图的边索引信息,以表示图中节点之间的连接关系。它是一个二维的 torch.Tensor,形状为 [2, num_edges],其中 num_edges 表示图中边的数量。每一列对应一条边,第一行表示边起始节点的索引,第二行表示边结束节点的索引。
  • y:用于存储图或者节点的标签信息,具体取决于任务类型。如果是图分类任务,y 通常表示整个图的类别标签,此时它是一个一维的 torch.Tensor,形状为 [1] 或者 [num_graphs](当处理多个图的批量数据时);如果是节点分类任务,y 表示每个节点的类别标签,形状为 [num_nodes]。
  • edge_attr:可选属性,用于存储边的特征信息。其形式也是一个 torch.Tensor,形状通常为 [num_edges, num_edge_features],num_edge_features 表示每条边所具有的特征维度数量。
  • pos:可选属性,用于存储节点的位置信息,通常在涉及到空间布局、几何相关的图数据时会用到,比如在处理点云数据(可以看作一种特殊的图结构)或者可视化图数据等场景下。它是一个二维的 torch.Tensor,形状为 [num_nodes, num_pos_features],常见的 num_pos_features 为 2(表示二维空间坐标)或者 3(表示三维空间坐标)等。

2.2 简单应用

首先创建一个图:

在这里插入图片描述

x是每个点的输入特征,y是每个点的标签。

x = torch.tensor([[2,1], [5,6], [3,7], [12,0]], dtype=torch.float)
y = torch.tensor([0, 1, 0, 1], dtype=torch.float)

edge_index = torch.tensor([[0, 1, 2, 0, 3],#起始点  
                           [1, 0, 1, 3, 2]], dtype=torch.long)#终止点

创建上述图:

from torch_geometric.data import Data
 
x = torch.tensor([[2,1], [5,6], [3,7], [12,0]], dtype=torch.float)
y = torch.tensor([0, 1, 0, 1], dtype=torch.float)
 
edge_index = torch.tensor([[0, 2, 1, 0, 3],
                           [3, 1, 0, 1, 2]], dtype=torch.long)
 
data = Data(x=x, y=y, edge_index=edge_index)

3.应用举例(基于图神经网络的电商购买预测)

详见:???????

更多推荐