DenseGraphConv
- class dgl.nn.pytorch.conv.DenseGraphConv(in_feats, out_feats, norm='both', bias=True, activation=None)[source]
基础类:
Module
来自 Semi-Supervised Classification with Graph Convolutional Networks 的图卷积层
我们建议用户在对稠密图应用图卷积时使用此模块。
- 参数:
in_feats (int) – 输入特征大小;即 \(h_j^{(l)}\) 的维数。
out_feats (int) – 输出特征大小;即 \(h_i^{(l+1)}\) 的维数。
norm (str, optional) – 应用归一化器的方式。 如果是 ‘right’,则将聚合的消息除以每个节点的入度,这相当于对接收到的消息进行平均。 如果是 ‘none’,则不应用归一化。 默认值为 ‘both’,其中应用了论文中的 \(c_{ij}\)。
bias (bool, optional) – 如果为 True,则向输出添加一个可学习的偏置项。 默认值:
True
。activation (callable activation function/layer or None, optional) – 如果不为 None,则对更新后的节点特征应用激活函数。 默认值:
None
。
注意
入度为零的节点将导致全零输出。避免这种情况的一种常见做法是为图中的每个节点添加自环,这可以通过将邻接矩阵的对角线设置为 1 来实现。
示例
>>> import dgl >>> import numpy as np >>> import torch as th >>> from dgl.nn import DenseGraphConv >>> >>> feat = th.ones(6, 10) >>> adj = th.tensor([[0., 0., 1., 0., 0., 0.], ... [1., 0., 0., 0., 0., 0.], ... [0., 1., 0., 0., 0., 0.], ... [0., 0., 1., 0., 0., 1.], ... [0., 0., 0., 1., 0., 0.], ... [0., 0., 0., 0., 0., 0.]]) >>> conv = DenseGraphConv(10, 2) >>> res = conv(adj, feat) >>> res tensor([[0.2159, 1.9027], [0.3053, 2.6908], [0.3053, 2.6908], [0.3685, 3.2481], [0.3053, 2.6908], [0.0000, 0.0000]], grad_fn=<AddBackward0>)
另请参阅