快速入门图神经网络(GNN)之——pytorch_geometric
·
1.首先要下载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.应用举例(基于图神经网络的电商购买预测)
详见:???????
更多推荐


所有评论(0)