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)
- static compute_edge_score_softmax(raw_edge_score: Tensor, edge_index: Tensor, num_nodes: int) Tensor[source]
通过应用softmax来归一化边缘分数。
- Return type:
- static compute_edge_score_tanh(raw_edge_score: Tensor, edge_index: Optional[Tensor] = None, num_nodes: Optional[int] = None) Tensor[source]
通过应用双曲正切函数来归一化边缘分数。
- Return type:
- static compute_edge_score_sigmoid(raw_edge_score: Tensor, edge_index: Optional[Tensor] = None, num_nodes: Optional[int] = None) Tensor[source]
通过应用sigmoid函数对边缘分数进行归一化。
- Return type:
- 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()用于反池化的信息。
- unpool(x: Tensor, unpool_info: UnpoolInfo) Tuple[Tensor, Tensor, Tensor][source]
取消之前的边缘池化步骤。
对于反池化操作,
x应该与此层的forward()函数生成的形状相同。然后,它将生成一个反池化的x,以及edge_index和batch。- Parameters:
x (torch.Tensor) – The node features.
unpool_info (UnpoolInfo) – 由
EdgePooling.forward()生成的信息。
- Return types:
x (torch.Tensor) - 未池化的节点特征。
edge_index (torch.Tensor) - 新的边索引。
batch (torch.Tensor) - 新的批次向量。