APPNPConv
- class dgl.nn.pytorch.conv.APPNPConv(k, alpha, edge_drop=0.0)[source]
基类:
Module
来自论文 Predict then Propagate: Graph Neural Networks meet Personalized PageRank 的近似个性化传播神经网络层
\[ \begin{align}\begin{aligned}H^{0} &= X\\H^{l+1} &= (1-\alpha)\left(\tilde{D}^{-1/2} \tilde{A} \tilde{D}^{-1/2} H^{l}\right) + \alpha H^{0}\end{aligned}\end{align} \]其中 \(\tilde{A}\) 是 \(A\) + \(I\)。
- 参数:
示例
>>> import dgl >>> import numpy as np >>> import torch as th >>> from dgl.nn import APPNPConv >>> >>> g = dgl.graph(([0,1,2,3,2,5], [1,2,3,4,0,3])) >>> feat = th.ones(6, 10) >>> conv = APPNPConv(k=3, alpha=0.5) >>> res = conv(g, feat) >>> print(res) tensor([[0.8536, 0.8536, 0.8536, 0.8536, 0.8536, 0.8536, 0.8536, 0.8536, 0.8536, 0.8536], [0.9268, 0.9268, 0.9268, 0.9268, 0.9268, 0.9268, 0.9268, 0.9268, 0.9268, 0.9268], [0.9634, 0.9634, 0.9634, 0.9634, 0.9634, 0.9634, 0.9634, 0.9634, 0.9634, 0.9634], [0.9268, 0.9268, 0.9268, 0.9268, 0.9268, 0.9268, 0.9268, 0.9268, 0.9268, 0.9268], [0.9634, 0.9634, 0.9634, 0.9634, 0.9634, 0.9634, 0.9634, 0.9634, 0.9634, 0.9634], [0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.5000]])
- forward(graph, feat, edge_weight=None)[source]
描述
计算 APPNP 层。
- 参数 graph:
图。
- 类型 graph:
DGLGraph
- 参数 feat:
输入特征,形状为 \((N, *)\)。 \(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, 可选
- 返回:
输出特征,形状为 \((N, *)\),其中 \(*\) 应与输入形状相同。
- 返回类型:
torch.Tensor