torch_geometric.transforms

变换是一种修改和自定义DataHeteroData对象的通用方法,可以通过隐式地将它们作为参数传递给Dataset,或者通过显式地将它们应用于单个DataHeteroData对象来实现:

import torch_geometric.transforms as T
from torch_geometric.datasets import TUDataset

transform = T.Compose([T.ToUndirected(), T.AddSelfLoops()])

dataset = TUDataset(path, name='MUTAG', transform=transform)
data = dataset[0]  # Implicitly transform data on every access.

data = TUDataset(path, name='MUTAG')[0]
data = transform(data)  # Explicitly transform data.

通用转换

BaseTransform

用于编写转换的抽象基类。

Compose

将多个转换组合在一起。

ComposeFilters

将多个过滤器组合在一起。

ToDevice

执行张量设备转换,可以针对Data对象的所有属性,也可以仅针对attrs指定的属性(功能名称:to_device)。

ToSparseTensor

将同质或异质数据对象的edge_index属性转换为转置torch_sparse.SparseTensor torch.sparse.Tensor对象,键为adj_t(功能名称:to_sparse_tensor)。

Constant

向每个节点特征 x 添加一个常数值(功能名称:constant)。

NormalizeFeatures

attrs中给出的属性行归一化,使其总和为一(功能名称:normalize_features)。

SVDFeatureReduction

通过奇异值分解(SVD)对节点特征进行降维(功能名称:svd_feature_reduction)。

RemoveTrainingClasses

从节点级训练集中移除由data.train_mask指定的类,例如,为了获得零样本标签场景(函数名称:remove_training_classes)。

RandomNodeSplit

通过向DataHeteroData对象添加train_maskval_masktest_mask属性来执行节点级别的随机分割(功能名称:random_node_split)。

RandomLinkSplit

DataHeteroData对象进行边级别的随机分割,分为训练集、验证集和测试集(功能名称:random_link_split)。

NodePropertySplit

根据给定的节点属性创建一个具有分布偏移的节点级分割,如"评估图模型在结构分布偏移下的鲁棒性和不确定性"论文中所提出的(功能名称:node_property_split)。

IndexToMask

将索引转换为掩码表示(功能名称:index_to_mask)。

MaskToIndex

将掩码转换为索引表示(功能名称:mask_to_index)。

Pad

应用填充以强制一致的张量形状(功能名称:pad)。

图变换

ToUndirected

将同质或异质图转换为无向图,使得对于每一条边 \((i,j) \in \mathcal{E}\),都有 \((j,i) \in \mathcal{E}\)(函数名称:to_undirected)。

OneHotDegree

将节点度数作为独热编码添加到节点特征中(功能名称:one_hot_degree)。

TargetIndegree

保存目标节点的全局归一化度(功能名称:target_indegree)。

LocalDegreeProfile

"A Simple yet Effective Baseline for Non-attribute Graph Classification"论文中附加局部度分布(LDP)(功能名称:local_degree_profile)。

AddSelfLoops

向给定的同质或异质图添加自环(功能名称:add_self_loops)。

AddRemainingSelfLoops

向给定的同质或异质图添加剩余的自环(功能名称:add_remaining_self_loops)。

RemoveSelfLoops

移除给定同质或异质图中的所有自环(功能名称:remove_self_loops)。

RemoveIsolatedNodes

从图中移除孤立的节点(功能名称:remove_isolated_nodes)。

RemoveDuplicatedEdges

从给定的同质或异质图中移除重复的边。

KNNGraph

基于节点位置 data.pos 创建一个k-NN图(功能名称:knn_graph)。

RadiusGraph

根据节点位置 data.pos 创建边,连接到给定距离内的所有点(函数名称:radius_graph)。

ToDense

将稀疏邻接矩阵转换为形状为[num_nodes, num_nodes, *]的密集邻接矩阵(功能名称:to_dense)。

TwoHop

将两跳边添加到边索引中(功能名称:two_hop)。

LineGraph

将图转换为其对应的线图(功能名称:line_graph)。

LaplacianLambdaMax

计算由torch_geometric.utils.get_laplacian()给出的图拉普拉斯矩阵的最高特征值(函数名称:laplacian_lambda_max)。

GDC

通过来自"扩散改进图学习"论文的图扩散卷积(GDC)处理图(功能名称:gdc)。

SIGN

来自"SIGN: Scalable Inception Graph Neural Networks"论文的可扩展Inception图神经网络模块(SIGN)(功能名称:sign),它预先计算了固定的表示。

GCNNorm

应用来自"Semi-supervised Classification with Graph Convolutional Networks"论文的GCN归一化(功能名称:gcn_norm)。

AddMetaPaths

HeteroData对象添加额外的边类型,这些边类型位于给定metapath的源节点类型和目标节点类型之间,如"异构图注意力网络"论文中所述(功能名称:add_metapaths)。

AddRandomMetaPaths

添加类似于AddMetaPaths的额外边类型。

RootedEgoNets

收集图中每个节点的根\(k\)-跳EgoNets,如"From Stars to Subgraphs: Uplifting Any GNN with Local Structure Awareness"论文中所述。

RootedRWSubgraph

为图中的每个节点收集基于根随机游走的子图,如"From Stars to Subgraphs: Uplifting Any GNN with Local Structure Awareness"论文中所述。

LargestConnectedComponents

选择图中对应最大连通组件的子图(功能名称:largest_connected_components)。

VirtualNode

将一个虚拟节点附加到给定的同质图中,该节点连接到所有其他节点,如"Neural Message Passing for Quantum Chemistry"论文中所述(功能名称:virtual_node)。

AddLaplacianEigenvectorPE

将来自"Benchmarking Graph Neural Networks"论文的拉普拉斯特征向量位置编码添加到给定的图中(函数名称:add_laplacian_eigenvector_pe)。

AddRandomWalkPE

将来自"Graph Neural Networks with Learnable Structural and Positional Representations"论文的随机游走位置编码添加到给定的图中(函数名称:add_random_walk_pe)。

FeaturePropagation

来自"On the Unreasonable Effectiveness of Feature propagation in Learning on Graphs with Missing Node Features"论文的特征传播算子(函数名称:feature_propagation)。

HalfHop

来自"Half-Hop: A Graph Upsampling Approach for Slowing Down Message Passing"论文的图上采样增强方法。

视觉变换

Distance

在其边属性中保存连接节点的欧几里得距离(功能名称:distance)。

Cartesian

在其边缘属性中保存链接节点的相对笛卡尔坐标(功能名称:cartesian)。

LocalCartesian

在其边缘属性中保存链接节点的相对笛卡尔坐标(功能名称:local_cartesian)。

Polar

在其边缘属性中保存链接节点的极坐标(功能名称:polar)。

Spherical

在其边缘属性中保存链接节点的球面坐标(功能名称:spherical)。

PointPairFeatures

计算旋转不变的点对特征(功能名称:point_pair_features)。

Center

将节点位置 data.pos 居中于原点(功能名称:center)。

NormalizeRotation

根据点云的特征向量旋转所有点(函数名称:normalize_rotation)。

NormalizeScale

将节点位置居中并归一化到区间 \((-1, 1)\)(功能名称:normalize_scale)。

RandomJitter

通过随机采样的平移值在给定区间内平移节点位置(功能名称:random_jitter)。

RandomFlip

以给定的概率随机沿给定轴翻转节点位置(功能名称:random_flip)。

LinearTransformation

使用离线计算的方形变换矩阵转换节点位置 data.pos(功能名称:linear_transformation)。

RandomScale

通过随机采样的因子\(s\)在给定区间内缩放节点位置,例如,生成变换矩阵(函数名称:random_scale)。

RandomRotate

围绕特定轴随机采样一个给定区间内的因子来旋转节点位置(功能名称:random_rotate)。

RandomShear

通过随机采样的因子\(s\)在给定区间内剪切节点位置,例如,生成变换矩阵(函数名称:random_shear)。

FaceToEdge

将形状为 [3, num_faces][4, num_faces] 的网格面转换为形状为 [2, num_edges] 的边索引(函数名称:face_to_edge)。

SamplePoints

根据网格面的面积均匀采样固定数量的点(函数名称:sample_points)。

FixedPoints

从点云中采样固定数量的点和特征(功能名称:fixed_points)。

GenerateMeshNormals

基于相邻面为每个网格节点生成法向量(函数名称:generate_mesh_normals)。

Delaunay

计算一组点的德劳内三角剖分(函数名称:delaunay)。

ToSLIC

使用skimage.segmentation.slic()算法将图像转换为超像素表示,结果生成一个torch_geometric.data.Data对象,该对象在data.pos中保存超像素的质心,并在data.x中保存其平均颜色(功能名称:to_slic)。

GridSampling

将点聚类成固定大小的体素(功能名称:grid_sampling)。