TUDataset返回的对象的参数 (待完善)

这里的TUDataset继承自InMemoryDataset基类

dataset = TUDataset(path, name, pre_transform=pre_transform, cleaned=clean)

  • path:数据路径,指定数据集所在的目录。
  • name:数据集名称,指定要使用的数据集。
  • pre_transform:预处理函数,即前面定义的pre_transform函数,用于对数据集进行预处理。数据对象将在保存到磁盘之前进行转换。
  • cleaned:清洗标志,指示是否使用已清洗的数据集。
  • transform: 数据对象将在每次访问之前进行转换。具体流程为:获取数据的函数首先用该transform函数对Data做转换,再返回数据;  该参数输入的函数应用于数据增广

  • pre_filter=None: 是一个检查数据是否要保留的函数

1.创建TUDataset对象时,它会执行以下操作:

  • 加载指定数据集的原始数据。
  • 如果提供了pre_transform参数,将应用预处理函数对数据集进行处理。
  • 如果提供了cleaned参数且为True,将使用清洗过的数据集,即移除同构性的图。清洗操作通常会在预处理之后,用于移除同构性或其他不必要的图结构。

2.返回创建的TUDataset对象,该对象包含了经过预处理和清洗(如果适用)的数据集,可以用于后续的数据分析、模型训练等任务。

3.返回的对象dataset包含以下参数:

  • dataset.data: 一个torch_geometric.data.Data对象的列表,其中每个对象表示数据集中的一个图。每个Data对象包含以下属性:

    1. x: 节点特征矩阵,形状为[num_nodes, num_node_features]。每行对应一个节点的特征向量。
    2. edge_index: 边索引矩阵,形状为[2, num_edges]。每列表示一个边,其中第一行是起始节点的索引,第二行是目标节点的索引。
    3. edge_attr: 边属性矩阵,形状为[num_edges, num_edge_features]。每行对应一个边的属性向量。
    4. pos: 节点位置矩阵,形状为[num_nodes, num_dimensions]。每行对应一个节点的位置信息。
    5. y: 图的目标标签,通常是一个整数或一个张量。表示图所属的类别或回归目标。
    6. 其他自定义属性:如果数据集中还有其他属性,它们将作为键值对存储在data对象中。
  • dataset.cleaned:数据是否经过清洗;如果:obj:`True',则数据集将只包含非同构图

  • dataset.cleaned_url:定义了已清洗数据集的下载URL

  • dataset.name:数据集名字

  • dataset.num_classes: 表示图数据集中的类别数量,通常用于图分类任务。它指示了图数据集中不同类别的图的数量。

  • dataset.num_edge_attributes: 表示边属性的数量。边属性是指在图中与边相关的附加信息或特征。例如,在社交网络中,边属性可以表示用户之间的关系强度或互动频率。

  • dataset.num_edge_features: 表示边特征的类别数。边特征是指在图中与边相关的特征向量或描述。边特征可以用来表示边的权重、距离、相似度等信息。

  • dataset.num_edge_labels: 表示边的标签类别数。边标签是指为图中的每条边分配的类别或标签。例如,在社交网络中,边标签可以表示用户之间的关系类型,如友好、家庭关系等。

  • dataset.num_features: 表示图数据集中的特征数量。这包括节点特征和边特征的总数量。

  • dataset.num_node_attributes: 表示节点属性的数量。节点属性是指在图中与节点相关的附加信息或特征。例如,在社交网络中,节点属性可以表示用户的年龄、性别、职业等。

  • dataset.num_node_features: 表示节点特征的类别数。节点特征是指在图中与节点相关的特征向量或描述。节点特征可以用来表示节点的属性、内容、表示向量等信息。

  • dataset.num_node_labels: 表示节点的标签类别数。节点标签是指为图中的每个节点分配的类别或标签。例如,在图像分类任务中,节点标签可以表示图像所属的类别。

  • dataset.transform: 数据转换函数,用于在加载数据时对数据进行预处理和转换。
  • dataset.pre_transform: 预转换函数,用于在数据处理阶段对数据进行预处理和转换。
  • dataset.pre_filter: 预过滤函数,用于在加载数据时对数据进行预过滤,过滤掉不需要的数据。
  • dataset.processed_dir: 处理后数据存储的目录路径。
  • dataset.processed_file_names: 处理后数据存储的文件名
  • dataset.processed_paths:处理后数据存储的文件路径
  • dataset.raw_dir: 原始数据存储的目录
  • dataset.raw_file_names: 原始数据存储的文件名
  • dataset.raw_paths:原始数据存储的文件路径
  • dataset.url: 数据集的下载URL
  • dataset.process(): 处理数据的方法。
  • dataset.slices:  这是一个包含切片信息的Python字典,用于快速访问图数据的不同部分。它包含了各个属性的切片范围,可以通过切片索引快速获取对应的数据。具体的参数解释如下:

    • x: 节点特征的切片范围,用于在data.x中获取节点特征。
    • edge_index: 边索引的切片范围,用于在data.edge_index中获取边索引。
    • edge_attr: 边属性的切片范围,用于在data.edge_attr中获取边属性。
    • y: 图的标签的切片范围,用于在data.y中获取图的标签。

这些参数可以通过dataset对象的属性访问,例如dataset.datadataset.slicesdataset.num_classesdataset.metadata

设我们使用TUDataset加载的数据集是MUTAG数据集,下面是一个例子来详细解释dataset.slices参数:

import torch_geometric
from torch_geometric.datasets import TUDataset

path = '/path/to/dataset'
name = 'MUTAG'
dataset = TUDataset(path, name)

print(dataset.slices)

输出结果:

{
    'x': tensor([0, 14, 23, 34, 52, 69, 90, 104, 114, 126, 135, 144, 159, 169, 185, 197, 204]),
    'edge_index': tensor([  0,   2,   0,   3,   0,   5,   0,   8,   0,  11,   0,  14,   0,  17,
                            0,  20,   0,  23,   0,  26,   0,  29,   0,  32,   0,  35,   0,  38,
                            ...
                            203, 196, 204, 198, 204, 199, 204, 200, 204, 201, 204, 202, 204, 203]),
    'edge_attr': tensor([ 0,  0,  1,  ..., 21, 17,  9]),
    'y': tensor([0, 0, 0,  ..., 1, 1, 1])
}

解释:

  • 'x': 这个键对应的值是一个包含了每个图中节点特征矩阵x的切片(索引范围)信息。在这个例子中,x的切片范围为[0, 14, 23, 34, 52, 69, 90, 104, 114, 126, 135, 144, 159, 169, 185, 197, 204]。这意味着第一个图(索引为0)中的节点特征在x[0:14]中,第二个图(索引为1)中的节点特征在x[14:23]中,
  • 其他属性也是如此,以此类推。

再一个解释如下:

假设我们使用TUDataset加载了一个数据集,其中包含5个图数据。每个图数据都具有节点特征x和边索引edge_index。当我们访问slices时,它将返回一个字典,其中包含了两个键:xedge_index

slices['x']是一个包含6个元素的列表,对应于数据集中每个图数据的节点特征x的切片索引。列表的每个元素都是一个切片对象,表示对应图数据的节点特征在x中的范围。

slices['edge_index']也是一个包含6个元素的列表,对应于数据集中每个图数据的边索引edge_index的切片索引。列表的每个元素同样是一个切片对象,表示对应图数据的边索引在edge_index中的范围。

这些切片索引可以用于快速访问和定位图数据的节点特征和边索引。通过使用这些切片索引,我们可以轻松地提取出特定图数据的节点特征和边索引,而不需要遍历整个xedge_index

例如,假设我们想获取第3个图数据的节点特征和边索引,我们可以使用slices['x'][3]slices['edge_index'][3]来获取对应的切片索引。然后,我们可以使用这些切片索引来从整个xedge_index中提取出第3个图数据的节点特征和边索引。

slices参数提供了一种有效访问和索引每个图数据的方式。通过这些切片信息,可以方便地从整个数据集中提取单个图的数据,进行后续的训练、验证和测试等操作。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值