torch_geometric.nn.pool.EdgePooling

class EdgePooling(in_channels: int, edge_score_method: Optional[Callable] = None, dropout: float = 0.0, add_to_edge_score: float = 0.5)[source]

Bases: Module

边缘池化操作符来自“通过边缘收缩实现图池化”“图神经网络的边缘收缩池化”论文。

简而言之,为每条边计算一个分数。 根据该分数迭代地收缩边,除非它们的节点之一已经是收缩边的一部分。

要复制“Towards Graph Pooling by Edge Contraction”论文中的配置,请使用EdgePooling.compute_edge_score_softmax()EdgePooling.compute_edge_score_tanh(),并将add_to_edge_score设置为0.0

要复制“Edge Contraction Pooling for Graph Neural Networks”论文中的配置,请将dropout设置为0.2

Parameters:
  • in_channels (int) – Size of each input sample.

  • edge_score_method (callable, optional) – 用于从原始边分数计算边分数的函数。默认情况下,这是每个节点所有入边的softmax。该函数接收一个形状为[num_nodes]raw_edge_score张量,一个edge_index张量和节点数量num_nodes,并生成一个与raw_edge_score大小相同的新张量,描述归一化的边分数。包含的函数有EdgePooling.compute_edge_score_softmax()EdgePooling.compute_edge_score_tanh()EdgePooling.compute_edge_score_sigmoid()。(默认:EdgePooling.compute_edge_score_softmax()

  • dropout (float, optional) – 在训练期间丢弃边缘分数的概率。(默认值: 0.0)

  • add_to_edge_score (float, 可选) – 一个值,将被添加到每个计算出的边缘分数中。添加这个值极大地有助于反池化的稳定性。(默认值: 0.5)

reset_parameters()[source]

重置模块的所有可学习参数。

static compute_edge_score_softmax(raw_edge_score: Tensor, edge_index: Tensor, num_nodes: int) Tensor[source]

通过应用softmax来归一化边缘分数。

Return type:

Tensor

static compute_edge_score_tanh(raw_edge_score: Tensor, edge_index: Optional[Tensor] = None, num_nodes: Optional[int] = None) Tensor[source]

通过应用双曲正切函数来归一化边缘分数。

Return type:

Tensor

static compute_edge_score_sigmoid(raw_edge_score: Tensor, edge_index: Optional[Tensor] = None, num_nodes: Optional[int] = None) Tensor[source]

通过应用sigmoid函数对边缘分数进行归一化。

Return type:

Tensor

forward(x: Tensor, edge_index: Tensor, batch: Tensor) Tuple[Tensor, Tensor, Tensor, UnpoolInfo][source]

前向传播。

Parameters:
  • x (torch.Tensor) – The node features.

  • edge_index (torch.Tensor) – The edge indices.

  • batch (torch.Tensor) – 批次向量 \(\mathbf{b} \in {\{ 0, \ldots, B-1\}}^N\), 它将 每个节点分配给一个特定的示例。

Return types:
  • x (torch.Tensor) - 池化后的节点特征。

  • edge_index (torch.Tensor) - 粗化的边索引。

  • batch (torch.Tensor) - 粗化的批次向量。

  • unpool_info (UnpoolInfo) - 由EdgePooling.unpool()用于反池化的信息。

Return type:

Tuple[Tensor, Tensor, Tensor, UnpoolInfo]

unpool(x: Tensor, unpool_info: UnpoolInfo) Tuple[Tensor, Tensor, Tensor][source]

取消之前的边缘池化步骤。

对于反池化操作,x 应该与此层的 forward() 函数生成的形状相同。然后,它将生成一个反池化的 x,以及 edge_indexbatch

Parameters:
Return types:
  • x (torch.Tensor) - 未池化的节点特征。

  • edge_index (torch.Tensor) - 新的边索引。

  • batch (torch.Tensor) - 新的批次向量。

Return type:

Tuple[Tensor, Tensor, Tensor]