torch_geometric.transforms.Pad

class Pad(max_num_nodes: Union[int, Dict[str, int]], max_num_edges: Optional[Union[int, Dict[Tuple[str, str, str], int]]] = None, node_pad_value: Union[int, float, Padding] = 0.0, edge_pad_value: Union[int, float, Padding] = 0.0, mask_pad_value: bool = False, add_pad_mask: bool = False, exclude_keys: Optional[List[str]] = None)[source]

Bases: BaseTransform

应用填充以强制一致的张量形状 (函数名称: pad).

此转换将填充节点和边的特征,使其达到节点或边特征维度中允许的最大大小。默认情况下,使用0.0作为填充值,并且可以通过设置node_pad_valueedge_pad_value来配置。

在将Pad应用于Data对象时,node_pad_value值(或edge_pad_value)可以是以下之一:

  • 一个整数、浮点数或UniformPadding类的对象,用于所有属性都将用相同值填充的情况;

  • 一个AttrNamePadding类的对象,用于在填充根据属性名称不同而变化的情况。

在将Pad应用于 HeteroData对象时,node_pad_value 值(或edge_pad_value)可以是:

  • 一个整数、浮点数或UniformPadding类的对象,用于当所有节点(或边)存储的所有属性都将用相同值填充的情况;

  • 一个AttrNamePadding类的对象,用于当填充将根据属性名称(而不是根据节点或边类型)而有所不同时的情况;

  • 一个类为 NodeTypePaddingEdgeTypePadding 的对象,用于当填充值根据节点或边类型不同而变化的情况。填充值也可以根据给定节点或边类型的属性名称而变化,通过使用 AttrNamePadding 对象作为其 values 参数的值。

请注意,为了确保数据集中所有图形的一致填充,必须满足以下条件:

  • 如果 max_num_nodes 是单个值,它必须大于或等于数据集中任何图的最大节点数;

  • 如果 max_num_nodes 是一个字典,每个节点类型的值必须大于或等于数据集中任何图的该类型节点的最大数量。

下面的示例展示了如何为Pad创建一个HeteroData对象的转换。该对象被填充为具有10个类型为v0的节点,20个类型为v1的节点和30个类型为v2的节点。 它被填充为具有80个类型为('v0', 'e0', 'v1')的边。 v0节点的所有属性都使用3.0的值进行填充。 v1节点类型的x属性使用-1.0的值进行填充,而该节点类型的其他属性使用0.5的值进行填充。 除了v0v1之外的节点类型的所有属性都使用1.0的值进行填充。 ('v0', 'e0', 'v1')边类型的所有属性都使用3.5的值进行填充。 ('v1', 'e0', 'v0')边类型的edge_attr属性使用-1.5的值进行填充,而该边类型的其他属性使用5.5的值进行填充。 除了这两种边类型之外的所有边类型的属性都使用1.5的值进行填充。

num_nodes = {'v0': 10, 'v1': 20, 'v2':30}
num_edges = {('v0', 'e0', 'v1'): 80}

node_padding = NodeTypePadding({
    'v0': 3.0,
    'v1': AttrNamePadding({'x': -1.0}, default=0.5),
}, default=1.0)

edge_padding = EdgeTypePadding({
    ('v0', 'e0', 'v1'): 3.5,
    ('v1', 'e0', 'v0'): AttrNamePadding({'edge_attr': -1.5},
                                        default=5.5),
}, default=1.5)

transform = Pad(num_nodes, num_edges, node_padding, edge_padding)
Parameters:
  • max_num_nodes (intdict) – 填充后的节点数量。 在异质图中,也可以接受一个字典,表示特定节点类型的节点数量。

  • max_num_edges (intdict, 可选) – 填充后的边数。 在异质图中,也可以接受一个字典,表示特定边类型的边数。(默认值:None

  • node_pad_value (intfloatPadding, 可选) – 用于节点特征的填充值。(默认值:0.0

  • edge_pad_value (intfloatPadding, 可选) – 用于边缘特征的填充值。(默认值:0.0edge_index 张量用第一个填充节点的索引进行填充(表示在填充节点上的一组自循环)。(默认值:0.0

  • mask_pad_value (bool, optional) – 用于填充 train_mask, val_masktest_mask 属性的填充值 (默认: False).

  • add_pad_mask (bool, 可选) – 如果设置为 True,将会附加 节点级别的 pad_node_mask 和边级别的 pad_edge_mask 属性到输出中,这些属性指示数据中的哪些元素是真实的(由 True 表示),哪些是由于填充而添加的(由 False 表示)。 (默认: False)

  • exclude_keys ([str], optional) – 要从输入数据对象中移除的键。(默认值: None)