torch_geometric.sampler

BaseSampler

一个抽象基类,用于初始化图采样器,并提供sample_from_nodes()sample_from_edges()例程。

NodeSamplerInput

sample_from_nodes() 的采样输入。

EdgeSamplerInput

sample_from_edges()的采样输入。

SamplerOutput

BaseSampler上对同构图进行采样的输出。

HeteroSamplerOutput

在异质图上的BaseSampler的采样输出。

NumNeighbors

在均匀或异质图中采样的邻居数量。

NegativeSampling

调用sample_from_edges()时,BaseSampler的负采样配置。

NeighborSampler

NeighborLoader 使用的内存中(异构)邻居采样器的实现。

HGTSampler

一个由HGTLoader使用的内存中异质分层采样器的实现。

class BaseSampler[source]

一个抽象基类,用于初始化图采样器并提供 sample_from_nodes()sample_from_edges() 例程。

注意

任何存储在采样器中的数据都会在使用采样器的数据加载工作器之间复制,因为每个数据加载工作器都持有采样器的一个实例。 因此,建议限制存储在采样器中的信息量。

sample_from_nodes(index: NodeSamplerInput, **kwargs) Union[HeteroSamplerOutput, SamplerOutput][source]

index中指定的节点执行采样,返回指定输出格式的采样子图。

index 是一个包含以下信息的元组:

  1. 种子节点的示例索引

  2. 开始采样的节点索引

  3. 给定种子节点的时间戳(可选)

Parameters:
  • 索引 (NodeSamplerInput) – 节点采样器输入对象。

  • **kwargs (可选) – 额外的关键字参数。

Return type:

Union[HeteroSamplerOutput, SamplerOutput]

sample_from_edges(index: EdgeSamplerInput, neg_sampling: Optional[NegativeSampling] = None) Union[HeteroSamplerOutput, SamplerOutput][source]

index中指定的边进行采样,返回指定输出格式的采样子图。

The index is a tuple holding the following information:

  1. 种子链接的示例索引

  2. 开始采样的源节点索引

  3. 开始采样的目标节点索引

  4. 种子链接的标签(可选)

  5. 给定种子节点的时间戳(可选)

Parameters:
Return type:

Union[HeteroSamplerOutput, SamplerOutput]

property edge_permutation: Union[Tensor, None, Dict[Tuple[str, str, str], Optional[Tensor]]]

如果采样器对原始图中的边顺序进行了任何修改,此函数应返回定义从原始图中的边到采样器中使用的边的排列的张量。如果没有应用这样的排列,则返回None。对于异构图,预期的返回类型是每种边类型的排列张量。

Return type:

Union[Tensor, None, Dict[Tuple[str, str, str], Optional[Tensor]]]

图采样器包。

class NodeSamplerInput(input_id: Optional[Tensor], node: Tensor, time: Optional[Tensor] = None, input_type: Optional[str] = None)[source]

采样的输入来自 sample_from_nodes().

Parameters:
  • input_id (torch.Tensor, optional) – 当前小批次数据加载器输入的索引。

  • node (torch.Tensor) – 开始采样的种子节点的索引。

  • 时间 (torch.Tensor, 可选) – 种子节点的时间戳。 (默认: None)

  • input_type (str, optional) – 输入节点类型(在异构图采样时使用)。(默认: None)

class EdgeSamplerInput(input_id: Optional[Tensor], row: Tensor, col: Tensor, label: Optional[Tensor] = None, time: Optional[Tensor] = None, input_type: Optional[Tuple[str, str, str]] = None)[source]

sample_from_edges()的采样输入。

Parameters:
  • input_id (torch.Tensor, optional) – 当前小批次数据加载器输入的索引。

  • row (torch.Tensor) – 开始采样的种子链接的源节点索引。

  • col (torch.Tensor) – 开始采样的种子链接的目标节点索引。

  • 标签 (torch.Tensor, 可选) – 种子链接的标签。 (默认: None)

  • 时间 (torch.Tensor, 可选) – 种子链接的时间戳。 (默认: None)

  • input_type (Tuple[str, str, str], optional) – 输入边的类型(在异构图的情况下进行采样时使用)。(默认值:None

class SamplerOutput(node: Tensor, row: Tensor, col: Tensor, edge: Optional[Tensor], batch: Optional[Tensor] = None, num_sampled_nodes: Optional[List[int]] = None, num_sampled_edges: Optional[List[int]] = None, orig_row: Optional[Tensor] = None, orig_col: Optional[Tensor] = None, metadata: Optional[Any] = None)[source]

BaseSampler上的采样输出,适用于同构图。

Parameters:
  • 节点 (torch.Tensor) – 原始图中的采样节点。

  • row (torch.Tensor) – 采样子图的源节点索引。 索引必须重新索引到 { 0, ..., num_nodes - 1 } 对应于 node 张量中的节点。

  • col (torch.Tensor) – 采样子图的目标节点索引。 索引必须重新索引到 { 0, ..., num_nodes - 1 } 对应于 node 张量中的节点。

  • edge (torch.Tensor, optional) – 原始图中的采样边。 此张量用于从原始图中获取边特征。如果没有边属性,则可以省略。

  • batch (torch.Tensor, optional) – 用于标识每个采样节点的种子节点的向量。在每种子节点的不相交子图采样情况下可能存在。(默认值: None)

  • num_sampled_nodes (List[int], optional) – 每跳采样的节点数量。(默认值: None)

  • num_sampled_edges (List[int], optional) – 每跳采样的边数。(默认: None)

  • orig_row (torch.Tensor, optional) – 由采样器返回的原始源节点索引。 在调用to_bidirectional()时,如果使用了keep_orig_edges选项,则会填充此值。(默认值:None

  • orig_col (torch.Tensor, optional) – 原始目标节点 由采样器返回的索引。 在调用to_bidirectional()时,如果使用了 keep_orig_edges选项,则会填充此字段。(默认值: None)

  • metadata (Optional[Any], 默认: None) – (Any, 可选): 额外的元数据信息。 (默认: None)

to_bidirectional(keep_orig_edges: bool = False) SamplerOutput[source]

将采样的子图转换为双向变体,其中所有采样的边都保证是双向的。

Parameters:

keep_orig_edges (bool, optional) – 如果指定,方向性边仍然保留。(默认值:False

Return type:

SamplerOutput

class HeteroSamplerOutput(node: Dict[str, Tensor], row: Dict[Tuple[str, str, str], Tensor], col: Dict[Tuple[str, str, str], Tensor], edge: Dict[Tuple[str, str, str], Optional[Tensor]], batch: Optional[Dict[str, Tensor]] = None, num_sampled_nodes: Optional[Dict[str, List[int]]] = None, num_sampled_edges: Optional[Dict[Tuple[str, str, str], List[int]]] = None, orig_row: Optional[Dict[Tuple[str, str, str], Tensor]] = None, orig_col: Optional[Dict[Tuple[str, str, str], Tensor]] = None, metadata: Optional[Any] = None)[source]

在异质图上的BaseSampler的采样输出。

Parameters:
  • node (Dict[str, torch.Tensor]) – 原始图中每种节点类型的采样节点。

  • row (Dict[Tuple[str, str, str], torch.Tensor]) – 每种边类型的采样子图的源节点索引。 索引必须重新索引到 { 0, ..., num_nodes - 1 } 对应于源节点类型的 node 张量中的节点。

  • col (Dict[Tuple[str, str, str], torch.Tensor]) – 每种边类型的采样子图的目标节点索引。 索引必须重新索引为 { 0, ..., num_nodes - 1 } 对应于目标节点类型的 node 张量中的节点。

  • edge (Dict[Tuple[str, str, str], torch.Tensor], optional) – 原始图中每种边类型的采样边。 此张量用于从原始图中获取边特征。如果没有边属性,则可以省略。

  • batch (Dict[str, torch.Tensor], optional) – 用于标识每个节点类型的每个采样节点的种子节点的向量。在每种子节点的独立子图采样情况下可能存在。 (默认值: None)

  • num_sampled_nodes (Dict[str, List[int]], optional) – 每个节点类型和每层的采样节点数。 (default: None)

  • num_sampled_edges (Dict[EdgeType, List[int]], optional) – 每种边类型和每层的采样边数。 (默认值: None)

  • orig_row (Dict[EdgeType, torch.Tensor], optional) – 采样器返回的原始源节点索引。 在调用 to_bidirectional() 时,如果使用了 keep_orig_edges 选项,则会填充此字段。(默认值:None

  • orig_col (Dict[EdgeType, torch.Tensor], optional) – 由采样器返回的原始目标节点索引。在调用to_bidirectional()时,如果使用了keep_orig_edges选项,则会填充此字段。(默认值:None

  • metadata (Optional[Any], default: None) – (Any, optional): Additional metadata information. (default: None)

to_bidirectional(keep_orig_edges: bool = False) SamplerOutput[source]

将采样的子图转换为双向变体,其中所有采样的边都保证是双向的。

Parameters:

keep_orig_edges (bool, optional) – 如果指定,方向性边仍然保留。(默认值:False

Return type:

SamplerOutput

class NumNeighbors(values: Union[List[int], Dict[Tuple[str, str, str], List[int]]], default: Optional[List[int]] = None)[source]

在均匀或异质图中采样的邻居数量。在异质图中,也可以接受一个字典,表示要为各个边类型采样的邻居数量。

Parameters:
  • values (List[int] 或 Dict[Tuple[str, str, str], List[int]]) – 要采样的邻居数量。 如果某个条目设置为 -1,则所有邻居都将被包括在内。 在异质图中,也可以接受一个字典,表示要为各个边类型采样的邻居数量。

  • 默认 (列表[int], 可选) – 未在 values 中指定的边类型的默认邻居数。(默认值: None)

get_values(edge_types: Optional[List[Tuple[str, str, str]]] = None) Union[List[int], Dict[Tuple[str, str, str], List[int]]][source]

返回邻居的数量。

Parameters:

edge_types (List[Tuple[str, str, str]], optional) – 用于生成邻居数量的边类型。(默认值: None)

Return type:

Union[List[int], Dict[Tuple[str, str, str], List[int]]]

get_mapped_values(edge_types: Optional[List[Tuple[str, str, str]]] = None) Union[List[int], Dict[str, List[int]]][source]

返回邻居的数量。 对于异构图,返回一个字典,其中边类型元组被转换为字符串。

Parameters:

edge_types (List[Tuple[str, str, str]], optional) – 用于生成邻居数量的边类型。(默认值: None)

Return type:

Union[List[int], Dict[str, List[int]]]

property num_hops: int

返回跳数。

Return type:

int

class NegativeSampling(mode: Union[NegativeSamplingMode, str], amount: Union[int, float] = 1, src_weight: Optional[Tensor] = None, dst_weight: Optional[Tensor] = None)[source]

当调用 BaseSamplersample_from_edges() 时的负采样配置。

Parameters:
  • mode (str) – 负采样模式 ("binary""triplet")。 如果设置为 "binary",将从图中随机采样负链接。 如果设置为 "triplet",将为每个正源节点随机采样负目标节点。

  • amount (intfloat, 可选) – 采样的负边与正边数量的比例。(默认值:1

  • src_weight (torch.Tensor, optional) – 一个节点级别的向量,用于确定源节点的采样。不一定需要总和为一。如果未给出,负节点将均匀采样。(默认值:None

  • dst_weight (torch.Tensor, optional) – 一个节点级别的向量,用于确定目标节点的采样。不一定需要总和为一。如果未提供,负节点将均匀采样。(默认值: None)

sample(num_samples: int, endpoint: Literal['src', 'dst'], num_nodes: Optional[int] = None) Tensor[source]

生成 num_samples 个负样本。

Return type:

Tensor

class NeighborSampler(data: Union[Data, HeteroData, Tuple[FeatureStore, GraphStore]], num_neighbors: Union[NumNeighbors, List[int], Dict[Tuple[str, str, str], List[int]]], subgraph_type: Union[SubgraphType, str] = 'directional', replace: bool = False, disjoint: bool = False, temporal_strategy: str = 'uniform', time_attr: Optional[str] = None, weight_attr: Optional[str] = None, is_sorted: bool = False, share_memory: bool = False, directed: bool = True)[source]

一个用于NeighborLoader的内存中(异构)邻居采样器的实现。

class HGTSampler(data: HeteroData, num_samples: Union[List[int], Dict[str, List[int]]], is_sorted: bool = False, share_memory: bool = False)[source]

一个内存中异构分层采样器的实现 由HGTLoader使用。