torch_geometric笔记:数据集 ENZYMES Minibatches
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相关推荐
- torch_geometric笔记:nn. graclus (图点分类)
torch_geometric.nn.graclus(edge_index, weight: Optional[torch.Tensor] = None, num_nodes: Optional[in ...
- torch_geometric 笔记:nn.ChebNet
1 理论部分 交通预测论文翻译:Deep Learning on Traffic Prediction: Methods,Analysis and Future Directions_UQI-LIUW ...
- torch_geometric 笔记:TORCH_GEOMETRIC.UTILS(更新中)
1 torch_geometric.utils.add_self_loops add_self_loops(edge_index, edge_weight: Optional[torch.Tensor ...
- torch_geometric 笔记: 数据集Cora 简易 GNN
1 获取数据集 该数据集用于semi-supervised的节点分类任务 from torch_geometric.datasets import Planetoiddataset = Planeto ...
- torch_geometric笔记:max_pool 与max_pool_x
1 max_pool 1.1 函数介绍 torch_geometric.nn.max_pool(cluster, data,transform=None) 对由torch_geometricy .da ...
- 【YOLO学习笔记——数据集】之一YOLO数据集制作2
目录 说在前面的话 一.准备工作 1.硬件设备 2.工具 二.数据集训练 1.图片预处理 2.训练 三.测试 说在前面的话 小编要考研,所以博客可能更新较慢,希望大家理解.但是写博客要坚持,每个月最少 ...
- CV学习笔记 — 数据集预处理常用脚本总结
笔者在学习计算机视觉时,需要经常借助脚本对数据集进行预处理,现将常用的脚本总结如下: 1. 批量修改文件后缀名 # 批量修改 import os import sys # 需要修改后缀的文件目录 os ...
- torch_geometric 笔记:global_mean_pool
对全图的点嵌入(node embedding)进行池化操作,返回一个图嵌入(graph embedding) global_mean_pool(x, batch, size=None)[ x (tor ...
- pytorch 学习笔记目录
1 部分内容 pytorch笔记 pytorch模型中的parameter与buffer_刘文巾的博客-CSDN博客 pytorch学习笔记 torchnn.ModuleList_刘文巾的博客-CSD ...
最新文章
- 不仅仅是写代码,而是完成作品
- proto buffer
- 小李飞刀:刷题第四弹!
- LBP(局部二值模式)特征提取原理
- Ribbon客户端负载均衡介绍
- adonis.js mysql_Adonis.js——数据库基本操作
- CSDN光合计划-纯干货福利-推荐几个算法、分布式、数据库全系列学习教程(企业实用技术类)
- vfp生成菜单时文件不存在_如何在VFP项目中创建菜单
- 白宫发布太空系统网络安全防护指令
- python线程池原理_Django异步任务线程池实现原理
- [转][python] 常用正则表达式爬取网页信息及分析HTML标签总结
- 《穿越计算机的迷雾》读书笔记四
- meterpreter里面cmd乱码解决方法chcp 65001
- 二次开发环境执行后台事务定义中断问题解决办法
- 6.1、startx命令怎么不能进入图形界面
- Ardunio开发实例-被动红外(PIR)运动传感器使用
- STEP7编程免驱动方式(METH-MPI-S2)
- Symfony Vue 教程
- java异步回调讲解
- 信息系统项目管理师学习笔记6-项目进度管理