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}\) 是边特征。
- 参数:
示例
>>> 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.Tensor 或 torch.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