GINEConv

class dgl.nn.pytorch.conv.GINEConv(apply_func=None, init_eps=0, learn_eps=False)[source]

基类: Module

带边特征的图同构网络,由论文 Strategies for Pre-training Graph Neural Networks 引入

\[h_i^{(l+1)} = f_\Theta \left((1 + \epsilon) h_i^{l} + \sum_{j\in\mathcal{N}(i)}\mathrm{ReLU}(h_j^{l} + e_{j,i}^{l})\right)\]

其中 \(e_{j,i}^{l}\) 是边特征。

参数:
  • apply_func (可调用模块None) – 公式中的 \(f_\Theta\)。如果不是 None,它将被应用于更新后的节点特征。默认值为 None。

  • init_eps (float, 可选) – 初始的 \(\epsilon\) 值,默认值:0

  • learn_eps (bool, 可选) – 如果为 True,\(\epsilon\) 将是一个可学习参数。默认值:False

示例

>>> import dgl
>>> import torch
>>> import torch.nn as nn
>>> from dgl.nn import GINEConv
>>> g = dgl.graph(([0, 1, 2], [1, 1, 3]))
>>> in_feats = 10
>>> out_feats = 20
>>> nfeat = torch.randn(g.num_nodes(), in_feats)
>>> efeat = torch.randn(g.num_edges(), in_feats)
>>> conv = GINEConv(nn.Linear(in_feats, out_feats))
>>> res = conv(g, nfeat, efeat)
>>> print(res.shape)
torch.Size([4, 20])
forward(graph, node_feat, edge_feat)[source]

前向计算。

参数:
  • graph (DGLGraph) – 输入图。

  • node_feat (torch.Tensortorch.Tensor 对) – 如果给定单个 torch.Tensor,它应为形状为 \((N, D_{in})\) 的输入特征,其中 \(D_{in}\) 是输入特征的维度,\(N\) 是节点数。如果给定一对 torch.Tensor,这对张量必须包含两个形状分别为 \((N_{in}, D_{in})\)\((N_{out}, D_{in})\) 的张量。如果 apply_func 不是 None,则 \(D_{in}\) 应符合 apply_func 的输入特征维度要求。

  • edge_feat (torch.Tensor) – 边特征。它是一个形状为 \((E, D_{in})\) 的张量,其中 \(E\) 是边数。

返回值:

形状为 \((N, D_{out})\) 的输出特征,其中 \(D_{out}\)apply_func 的输出特征维度。如果 apply_func 为 None,则 \(D_{out}\) 应与 \(D_{in}\) 相同。

返回类型:

torch.Tensor