pytorch 笔记:torch_geometric (1)创建一张图

1 torch_geometric介绍

        PyTorch geometric 是一个基于pytorch的图网络处理库,里面封装了处理图网络需要用到的基础结构。

         一个单个的图被描述为torch_geometric.data.Data,他有以下属性:

  • data.x (节点的特征)                            shape: [num_nodes, num_node_features]
  • data.edge_index (图的连接情况)        shape: [2, num_edges]
  • data.edge_attr (边的特征)                   shape: [num_edges, num_edge_features]
  • data.y: 节点标签,对于node-level级的任务,该数据形状为[num_nodes, ];对于graph-level级的任务,形状为[, ]
  • data.ydata.posshape:该矩阵表示节点在空间中的位置信息。 [num_nodes, num_dimensions]

2 创建一张图

pytorch 笔记:torch_geometric (1)创建一张图_第1张图片

 我们创建一张这样的有向图

import torch
from torch_geometric.data import Data

2.1 设置点属性

shape = [num_nodes, num_node_features]

 图中有四个节点 v1~v4 每个节点两维特征向量表示,标签y是其类别

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

2.2 设置边属性

shape = [2,num_edge]

边的第一个列表表示源节点索引,第二个列表表示目标节点索引

创建的Data对象与顺序无关
 

edge_index = torch.tensor([[0, 1, 2, 0, 3], 
                           [1, 0, 1, 3, 2]])

2.3  构建Graph的数据

data = Data(x=x, y=y,edge_index=edge_index)
data

'''
Data(x=[4, 2], edge_index=[2, 5], y=[4])
说明有向边有5条、节点有4个、每个节点有两个特征
'''

3 Data的属性

3.1 将Data视为字典

keys

data有几个键值

data['x']

查看键值为x的内容(即节点的特征)

pytorch 笔记:torch_geometric (1)创建一张图_第2张图片

键值对

pytorch 笔记:torch_geometric (1)创建一张图_第3张图片

 3.2 将Data视为图

pytorch 笔记:torch_geometric (1)创建一张图_第4张图片  

点数量
边数量
点的特征数量
有无孤立点

有孤立点的情况:

edge_index = torch.tensor([[0, 1, 1],
                           [1, 0, 1]])

x = torch.tensor([[-1], [0], [1]])

data = Data(x=x, edge_index=edge_index)
data.has_isolated_nodes()
#True
有无自环

有自环的情况:

edge_index = torch.tensor([[0, 1, 1],
                           [1, 0, 1]])

x = torch.tensor([[-1], [0], [1]])

data = Data(x=x, edge_index=edge_index)
data.has_self_loops()
#True
是否是有向图

无向图的情况:

edge_index = torch.tensor([[0, 1, 1, 2],
                           [1, 0, 2, 1]])

x = torch.tensor([[-1], [0], [1]])

data = Data(x=x, edge_index=edge_index)
data.is_directed()#False

你可能感兴趣的:(pytorch学习,pytorch,深度学习,神经网络)