Pytorch Geometric中包含大量的常见基准数据集。在初始化数据集的时候,框架会自动下载数据集的原始文件,并将其处理为Data对象。例如要下载ENZYMES数据集(由600个graph划分为6个类别)

1 下载数据集

from torch_geometric.datasets import TUDatasetdataset = TUDataset(root='', name='ENZYMES')dataset
#ENZYMES(600)type(dataset)
#torch_geometric.datasets.tu_dataset.TUDatasetlen(dataset)
#600
#说明600张图dataset.num_classes
#6
#图一共有6各不同的类dataset.num_node_features
#3 每一个节点有三个特征data = dataset[0]
data
#Data(edge_index=[2, 168], x=[37, 3], y=[1])
#第一张图有168条有向边,37个节点,每个节点3个特征,整张图有一个类别data.is_undirected()
#True

2 Mini-batches

神经网络通常以batch的方式进行训练,geometric在mini-batch实现了并行化,这种组合允许在一个batch中使用不同数量的边和节点。

在torch_geometric.data.DataLoader中,已经包含了此过程。

这种mini-batch的操作本质上来说是将一个batch的graph看成是一个大的graph,由此,无论batch size是多少,其将所有的操作都统一在一个大图上进行操作。

from torch_geometric.datasets import TUDataset
from torch_geometric.loader import DataLoaderdataset = TUDataset(root='', name='ENZYMES', use_node_attr=True)
loader = DataLoader(dataset, batch_size=32, shuffle=True)for batch in loader:print(batch,batch.num_graphs)'''
Batch(edge_index=[2, 3890], x=[1075, 21], y=[32], batch=[1075], ptr=[33]) 32
Batch(edge_index=[2, 4284], x=[1157, 21], y=[32], batch=[1157], ptr=[33]) 32
Batch(edge_index=[2, 4098], x=[1086, 21], y=[32], batch=[1086], ptr=[33]) 32
Batch(edge_index=[2, 3668], x=[916, 21], y=[32], batch=[916], ptr=[33]) 32
Batch(edge_index=[2, 4062], x=[1074, 21], y=[32], batch=[1074], ptr=[33]) 32
Batch(edge_index=[2, 4086], x=[1096, 21], y=[32], batch=[1096], ptr=[33]) 32
Batch(edge_index=[2, 3954], x=[1005, 21], y=[32], batch=[1005], ptr=[33]) 32
Batch(edge_index=[2, 4170], x=[1064, 21], y=[32], batch=[1064], ptr=[33]) 32
Batch(edge_index=[2, 4258], x=[1149, 21], y=[32], batch=[1149], ptr=[33]) 32
Batch(edge_index=[2, 3836], x=[997, 21], y=[32], batch=[997], ptr=[33]) 32
Batch(edge_index=[2, 3886], x=[1016, 21], y=[32], batch=[1016], ptr=[33]) 32
Batch(edge_index=[2, 4066], x=[1042, 21], y=[32], batch=[1042], ptr=[33]) 32
Batch(edge_index=[2, 3946], x=[1046, 21], y=[32], batch=[1046], ptr=[33]) 32
Batch(edge_index=[2, 3656], x=[927, 21], y=[32], batch=[927], ptr=[33]) 32
Batch(edge_index=[2, 4110], x=[1034, 21], y=[32], batch=[1034], ptr=[33]) 32
Batch(edge_index=[2, 3824], x=[1002, 21], y=[32], batch=[1002], ptr=[33]) 32
Batch(edge_index=[2, 4178], x=[1116, 21], y=[32], batch=[1116], ptr=[33]) 32
Batch(edge_index=[2, 3736], x=[974, 21], y=[32], batch=[974], ptr=[33]) 32
Batch(edge_index=[2, 2856], x=[804, 21], y=[24], batch=[804], ptr=[25]) 24
'''

以  Batch(edge_index=[2, 3890], x=[1075, 21], y=[32], batch=[1075], ptr=[33])  为例:

  • edge_index=[2, 3890]——这个batch一共3890条边
  • x=[1075, 21]——整个batch的节点特征矩阵,这个batch一共2075个点,至于这个21,我不太明白,是因为不同的图有不同的特征,所以拼起来一共21个不同的特征吗?欢迎大家在评论区指正!
  • y=[32]——32个图,32维特征
  • batch=[1075]——batch是一个列向量,它将每个节点映射到该batch中的对应的graph:

至于这个ptr,查了很多资料,都没一个说法。

于是我自己做了一些尝试:感觉可能是这个意思(欢迎指正哈):就是这个batch目前累计看到的图的节点数量

因为实验是后来补的,所以了不同的图

from torch_geometric.datasets import TUDataset
from torch_geometric.loader import DataLoaderdataset = TUDataset(root='', name='ENZYMES', use_node_attr=True)
loader = DataLoader(dataset, batch_size=32, shuffle=True)for batch in loader:print(batch,batch.num_graphs)break
#Batch(edge_index=[2, 3822], x=[980, 21], y=[32], batch=[980], ptr=[33]) 32batch['ptr']
'''
tensor([  0,  41,  66,  78, 122, 151, 193, 229, 261, 284, 350, 397, 429, 453,493, 534, 576, 588, 605, 634, 644, 660, 693, 723, 763, 811, 834, 847,887, 899, 940, 956, 980])
'''sum=[0]
for i in range(32):sum.append(sum[-1]+int(batch[i]['x'].shape[0]))
print(sum)'''
[0, 41, 66, 78, 122, 151, 193, 229, 261, 284, 350, 397, 429, 453, 493, 534, 576, 588, 605, 634, 644, 660, 693, 723, 763, 811, 834, 847, 887, 899, 940, 956, 980]
'''

2.1 自己的图列表 &DataLoader

不难发现,这种下载的数据集,可以看成是图的集合

那么如果我门自己设计了一些图,集合成一个列表,我们可以直接用这个列表构造DataLoader(注:这里的DataLoader是torch_geometric.loader的DataLoader)

torch_geometric笔记:数据集 ENZYMES Minibatches相关推荐

  1. torch_geometric笔记:nn. graclus (图点分类)

    torch_geometric.nn.graclus(edge_index, weight: Optional[torch.Tensor] = None, num_nodes: Optional[in ...

  2. torch_geometric 笔记:nn.ChebNet

    1 理论部分 交通预测论文翻译:Deep Learning on Traffic Prediction: Methods,Analysis and Future Directions_UQI-LIUW ...

  3. torch_geometric 笔记:TORCH_GEOMETRIC.UTILS(更新中)

    1 torch_geometric.utils.add_self_loops add_self_loops(edge_index, edge_weight: Optional[torch.Tensor ...

  4. torch_geometric 笔记: 数据集Cora 简易 GNN

    1 获取数据集 该数据集用于semi-supervised的节点分类任务 from torch_geometric.datasets import Planetoiddataset = Planeto ...

  5. torch_geometric笔记:max_pool 与max_pool_x

    1 max_pool 1.1 函数介绍 torch_geometric.nn.max_pool(cluster, data,transform=None) 对由torch_geometricy .da ...

  6. 【YOLO学习笔记——数据集】之一YOLO数据集制作2

    目录 说在前面的话 一.准备工作 1.硬件设备 2.工具 二.数据集训练 1.图片预处理 2.训练 三.测试 说在前面的话 小编要考研,所以博客可能更新较慢,希望大家理解.但是写博客要坚持,每个月最少 ...

  7. CV学习笔记 — 数据集预处理常用脚本总结

    笔者在学习计算机视觉时,需要经常借助脚本对数据集进行预处理,现将常用的脚本总结如下: 1. 批量修改文件后缀名 # 批量修改 import os import sys # 需要修改后缀的文件目录 os ...

  8. torch_geometric 笔记:global_mean_pool

    对全图的点嵌入(node embedding)进行池化操作,返回一个图嵌入(graph embedding) global_mean_pool(x, batch, size=None)[ x (tor ...

  9. pytorch 学习笔记目录

    1 部分内容 pytorch笔记 pytorch模型中的parameter与buffer_刘文巾的博客-CSDN博客 pytorch学习笔记 torchnn.ModuleList_刘文巾的博客-CSD ...

最新文章

  1. 不仅仅是写代码,而是完成作品
  2. proto buffer
  3. 小李飞刀:刷题第四弹!
  4. LBP(局部二值模式)特征提取原理
  5. Ribbon客户端负载均衡介绍
  6. adonis.js mysql_Adonis.js——数据库基本操作
  7. CSDN光合计划-纯干货福利-推荐几个算法、分布式、数据库全系列学习教程(企业实用技术类)
  8. vfp生成菜单时文件不存在_如何在VFP项目中创建菜单
  9. 白宫发布太空系统网络安全防护指令
  10. python线程池原理_Django异步任务线程池实现原理
  11. [转][python] 常用正则表达式爬取网页信息及分析HTML标签总结
  12. 《穿越计算机的迷雾》读书笔记四
  13. meterpreter里面cmd乱码解决方法chcp 65001
  14. 二次开发环境执行后台事务定义中断问题解决办法
  15. 6.1、startx命令怎么不能进入图形界面
  16. Ardunio开发实例-被动红外(PIR)运动传感器使用
  17. STEP7编程免驱动方式(METH-MPI-S2)
  18. Symfony Vue 教程
  19. java异步回调讲解
  20. 信息系统项目管理师学习笔记6-项目进度管理

热门文章

  1. [转]ASP.NET中使用UpdatePanel实现局部异步刷新方法和攻略
  2. js:进一步关闭(范围:下一个)
  3. Stefan Tilkov:跳过单体应用,从微服务开始
  4. 码农如何快速打造一个有设计感的网站
  5. ASP.NET - 演练:创建网页以显示 XML 数据
  6. 交换机VLAN划分详细手册
  7. lwip之数据收发流程_1
  8. python_wifi
  9. 万维钢_《高手——精英的见识和我们的时代》读书笔记_1
  10. 熟悉mysql基本数据库操作系统_MySQL数据库的基本操作