在pyG上定义数据集

使用数据集的一般过程
PyG定义了使用数据的一般过程:从网络上下载数据原始文件;对数据原始文件做处理,为每一个图样本生成一个Data对象;对每一个Data对象执行数据处理,使其转换成新的Data对象;过滤Data对象;保存Data对象到文件;获取Data对象,在每一次获取Data对象时,都先对Data对象做数据变换(于是获取到的是数据变换后的Data对象)。实际中并非需要严格执行每一个步骤,以上步骤在特定的条件下可以被跳过,具体内容在下文里会学到。

创建内存数据集
为了创建torch_geometric.data.InMemoryDataset,需要实现四种基本方法:

torch_geometric.data.InMemoryDataset.raw_file_names():储存源文件的列表。如果这些文件都在raw_dir中找到了,就会跳过下载。
torch_geometric.data.InMemoryDataset.processed_file_names():储存处理后的文件列表,若全部找到就跳过预处理。
torch_geometric.data.InMemoryDataset.download():将raw_file_names中的文件列表,下载到raw_dir
torch_geometric.data.InMemoryDataset.process():处理原始数据,并保存到processed_dir
更详细的可以查看torch_geometric.data.
这四个函数中,最关键的是process(),在这个方法中,我们需要读取并且创建一系列的Data对象,然后将其保存到processed_dir. 由于保存一个巨大的python列表相当耗时,因此在保存之前,一般会将上述列表整理为一个巨大的Data对象,通过torch_geometric.data.InMemoryDataset.collate()来实现,collate()方法,可以理解为用空间换时间。
这个整理后的数据对象将所有的例子连接成一个大的数据对象data,然后返回了slices字典以从该对象中重构单个示例。最后,将构造函数中的这2个对象,加载到属性self.data 和slef.slices。

创建更大的数据集
为了创建不适合内存的数据集,可以使用torch_geometric.data.Dataset,它和torchvision的datasets是相当接近的。只是需要额外实现2个方法:

torch_geometric.data.Dataset.len():返回数据集中的样本数,
torch_geometric.data.Dataset.get():实现加载的单个图的逻辑。
在内部,torch_geometric.data.Dataset.getitem() 从torch_geometric.data.Dataset.get()获取数据对象,并根据transform中规定的转换方法进行转换。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用PyTorch Geometric (pyg)创建自制数据集时,你可以继承`InMemoryDataset`类,并重写一些必要的方法来实现数据集的下载、处理和加载。首先,你需要定义一个类,例如`MyDataset`,并将其继承自`InMemoryDataset`。在构造函数中,你可以调用父类的构造函数,并在其中加载数据集。你可以使用`torch.load`函数加载数据,并将其赋值给`self.data`和`self.slices`。同时,你可以重写`raw_file_names`和`processed_file_names`方法来指定原始文件和处理后的文件的名称。在`download`方法中,你可以实现数据集的下载逻辑。在`process`方法中,你可以对数据集进行处理,并将处理后的数据保存到指定的路径。最后,在`collate`函数中,你可以将一个python列表形式的数据转换为`InMemoryDataset`内部存储数据的格式。你可以使用`data_list\[0\].__class__()`来创建一个空的数据对象,然后将列表中的每个数据对象转换为该类型。\[2\]\[3\] #### 引用[.reference_title] - *1* [在PyG上构建自己的数据集](https://blog.csdn.net/qq_32113189/article/details/126663738)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【PyG入门学习】四:构建自己的数据集](https://blog.csdn.net/TwT520Ly/article/details/105633847)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值