PyG文档之二:快速入门

图数据常规操作

图一般被用来建模和描述目标(节点)间成对的关系(边)。在Pytorch Gemometric(以后均简称pyg)中,一个图是由torch_geometric.data.Data的一个实例来描述的,
设此图有N个节点,每个节点有n个特征,M条边,每条边有m个特征,默认情况下拥有如下的属性:

  • data.x: 节点的特征矩阵,形状:[N,n]
  • data.edge_index: 用COO格式储存的图数据,形状:[2,M](如不理解没事,后面我会在栗子中详细介绍),数据类型是torch.long
    COO就是坐标,coordinate.思想也很简单,每列分别存储:行坐标,纵坐标,值。
    稀疏矩阵存储格式参考
  • data.edge_attr: 边特征矩阵,形状[M,m]
  • data.y: 要训练的目标(可以是任意形状),如节点级目标[节点数,*],图级目标[1,*],此处*代表样本数量。
  • data.pos: 节点位置矩阵,形状:[N,num_dimensions],在有些图中,节点是具有坐标属性,比如3D点云,每个节点都是3维空间中的一个坐标,类似的也可以是其它维度的。

这些属性都不是必须属性,实际上Data对象并不局限于这些属性。例如:我们可以通过data.face来扩展它,用以保存形状为[3,num_Faces](数据类型为torch.long)的三维网格中三角形的连通性。

栗子1:实例化一个data

用一个具有三个节点和四个边的无加权和无向图的简单示例。每个节点只包含一个特征:图1

import torch
from torch_geometric.data import Data
#以列为单位,比如第一列:0,1 表示节点0到节点1的边:0->1,同理1,2表示边1->2,
#这样储存可以很方便储存稀疏的图。虽然这个图只有2条边,但是为了统一无向图和有向图的存储,
#因此需要每条边存2个方向。
edge_index = torch.tensor([[0, 1, 1, 2],
                           [1, 0, 2, 1]], dtype=torch.long)
x = torch.tensor([[-1], [0], [1]], dtype=to
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值