TAGConv

class dgl.nn.pytorch.conv.TAGConv(in_feats, out_feats, k=2, bias=True, activation=None)[source]

基类: Module

来自 Topology Adaptive Graph Convolutional Networks 的拓扑自适应图卷积层

\[H^{K} = {\sum}_{k=0}^K (D^{-1/2} A D^{-1/2})^{k} X {\Theta}_{k},\]

其中 \(A\) 表示邻接矩阵,\(D_{ii} = \sum_{j=0} A_{ij}\) 表示其对角度的矩阵,\({\Theta}_{k}\) 表示用于将不同跳数的结果相加的线性权重。

参数:
  • in_feats (int) – 输入特征大小。即 \(X\) 的维度数。

  • out_feats (int) – 输出特征大小。即 \(H^{K}\) 的维度数。

  • k (int, optional) – 跳数 \(K\)。默认值: 2

  • bias (bool, optional) – 如果为 True,则在输出中添加可学习的偏置项。默认值: True

  • activation (可调用的激活函数/层None, optional) – 如果不为 None,则对更新后的节点特征应用激活函数。默认值: None

lin

可学习的线性模块。

类型:

torch.Module

示例

>>> import dgl
>>> import numpy as np
>>> import torch as th
>>> from dgl.nn import TAGConv
>>>
>>> g = dgl.graph(([0,1,2,3,2,5], [1,2,3,4,0,3]))
>>> feat = th.ones(6, 10)
>>> conv = TAGConv(10, 2, k=2)
>>> res = conv(g, feat)
>>> res
tensor([[ 0.5490, -1.6373],
        [ 0.5490, -1.6373],
        [ 0.5490, -1.6373],
        [ 0.5513, -1.8208],
        [ 0.5215, -1.6044],
        [ 0.3304, -1.9927]], grad_fn=<AddmmBackward>)
forward(graph, feat, edge_weight=None)[source]

描述

计算拓扑自适应图卷积。

参数 graph:

图。

类型 graph:

DGLGraph

参数 feat:

形状为 \((N, D_{in})\) 的输入特征,其中 \(D_{in}\) 是输入特征的大小,\(N\) 是节点数。

类型 feat:

torch.Tensor

参数 edge_weight:

在消息传递过程中使用的 edge_weight。这等价于在上述公式中使用加权邻接矩阵,并且 \(\tilde{D}^{-1/2}\tilde{A} \tilde{D}^{-1/2}\) 基于 dgl.nn.pytorch.conv.graphconv.EdgeWeightNorm

类型 edge_weight:

torch.Tensor, optional

返回:

形状为 \((N, D_{out})\) 的输出特征,其中 \(D_{out}\) 是输出特征的大小。

返回类型:

torch.Tensor

reset_parameters()[source]

描述

重新初始化可学习参数。

注意

模型参数使用 Glorot 均匀初始化。