torch_geometric.nn.conv.GCN2Conv

class GCN2Conv(channels: int, alpha: float, theta: Optional[float] = None, layer: Optional[int] = None, shared_weights: bool = True, cached: bool = False, add_self_loops: bool = True, normalize: bool = True, **kwargs)[source]

Bases: MessagePassing

具有初始残差连接和恒等映射的图卷积算子(GCNII)来自“简单且深度图卷积网络”论文。

\[\mathbf{X}^{\prime} = \left( (1 - \alpha) \mathbf{\hat{P}}\mathbf{X} + \alpha \mathbf{X^{(0)}}\right) \left( (1 - \beta) \mathbf{I} + \beta \mathbf{\Theta} \right)\]

使用 \(\mathbf{\hat{P}} = \mathbf{\hat{D}}^{-1/2} \mathbf{\hat{A}} \mathbf{\hat{D}}^{-1/2}\),其中 \(\mathbf{\hat{A}} = \mathbf{A} + \mathbf{I}\) 表示插入自环的邻接矩阵, \(\hat{D}_{ii} = \sum_{j=0} \hat{A}_{ij}\) 表示其对角度矩阵, 而 \(\mathbf{X}^{(0)}\) 是初始特征表示。 在这里,\(\alpha\) 表示初始残差连接的强度, 而 \(\beta\) 表示恒等映射的强度。 邻接矩阵可以包含除 1 以外的其他值,通过可选的 edge_weight 张量表示边的权重。

Parameters:
  • channels (int) – 每个输入和输出样本的大小。

  • alpha (float) – 初始残差连接的强度 \(\alpha\)

  • theta (float, optional) – 用于计算身份映射强度的超参数 \(\theta\) \(\beta = \log \left( \frac{\theta}{\ell} + 1 \right)\). (默认值: None)

  • layer (int, optional) – 该模块执行的层 \(\ell\)。(默认值:None

  • shared_weights (bool, 可选) – 如果设置为 False,将使用不同的权重矩阵来处理平滑表示和初始残差(“GCNII*”)。(默认: True)

  • cached (bool, optional) – 如果设置为 True,该层将在第一次执行时缓存 \(\mathbf{\hat{D}}^{-1/2} \mathbf{\hat{A}} \mathbf{\hat{D}}^{-1/2}\) 的计算结果,并在后续执行中使用缓存版本。 此参数应仅在传导学习场景中设置为 True。(默认值:False

  • normalize (bool, optional) – 是否添加自环并应用对称归一化。(默认: True)

  • add_self_loops (bool, 可选) – 如果设置为 False,将不会向输入图中添加自环。(默认值:True

  • **kwargs (optional) – Additional arguments of torch_geometric.nn.conv.MessagePassing.

Shapes:
  • 输入: 节点特征 \((|\mathcal{V}|, F)\), 初始节点特征 \((|\mathcal{V}|, F)\), 边索引 \((2, |\mathcal{E}|)\), 边权重 \((|\mathcal{E}|)\) (可选)

  • 输出: 节点特征 \((|\mathcal{V}|, F)\)

forward(x: Tensor, x_0: Tensor, edge_index: Union[Tensor, SparseTensor], edge_weight: Optional[Tensor] = None) Tensor[source]

运行模块的前向传播。

Return type:

Tensor

reset_parameters()[source]

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