PyG内存数据集构建教程:InMemoryDataset详解与应用

需积分: 0 0 下载量 79 浏览量 更新于2024-08-05 收藏 355KB PDF 举报
本章节主要介绍了如何在PyG中处理占用内存有限的数据集,特别是通过构造数据完全存于内存的数据集类,即InMemory数据集类。以下内容详细阐述了这一过程: 1. **数据使用的一般过程**: - 数据集通常从网络上下载原始文件; - 对这些原始文件进行预处理,每个图样本生成一个Data对象; - 数据对象进一步处理,转换成新的形式; - 进行数据筛选或过滤; - 数据存储到文件,通常分为未处理的raw_dir和处理后的processed_dir; - 在获取数据时,可能会有预处理步骤,如数据变换。 2. **InMemoryDataset基类**: - InMemoryDataset是自定义数据集类的基础,用户通过继承该类来创建可存储于内存中的数据集; - 初始化方法参数包括`root`(数据集的根目录,包含raw_dir和processed_dir),以及两个转换函数:`transform`(用于数据增广,每次获取数据前执行)和`pre_transform`(数据预处理,用于在获取数据前执行,默认无操作)。 3. **简化版InMemory数据集类**: - 用户可以根据需要定制自己的InMemory数据集类,只需实现必要的方法,如`__len__`(计算数据集长度)、`__getitem__`(按索引获取数据)以及可能的`__iter__`(遍历数据集)等。 4. **实例与过程**: - 创建InMemory数据集实例时,需要加载数据到内存,这个过程可能涉及读取存储在processed_dir下的处理过的Data对象; - 在使用过程中,每次获取数据时,数据会经过`pre_transform`和`transform`的处理,然后返回给用户。 本章节重点在于指导用户如何利用PyG提供的InMemoryDataset类,高效地管理内存中的数据集,通过定制化的方法实现数据加载、预处理和增强,确保在内存有限的情况下仍能灵活处理大规模图数据。