GatedGCNConv
- class dgl.nn.pytorch.conv.GatedGCNConv(input_feats, edge_feats, output_feats, dropout=0, batch_norm=True, residual=True, activation=<function relu>)[源码]
基类:
Module
来自 Benchmarking Graph Neural Networks 的门控图卷积层。
\[ \begin{align}\begin{aligned}e_{ij}^{l+1}=D^l h_{i}^{l}+E^l h_{j}^{l}+C^l e_{ij}^{l}\\norm_{ij}=\Sigma_{j\in N_{i}} \sigma\left(e_{ij}^{l+1}\right)+\varepsilon\\\hat{e}_{ij}^{l+1}=\sigma(e_{ij}^{l+1}) / norm_{ij}\\h_{i}^{l+1}=A^l h_{i}^{l}+\Sigma_{j \in N_{i}} \hat{e}_{ij}^{l+1} \odot B^l h_{j}^{l}\end{aligned}\end{align} \]其中 \(h_{i}^{l}\) 是节点 \(i\) 在层 \(l\) 的特征,\(e_{ij}^{l}\) 是边 \(ij\) 在层 \(l\) 的特征,\(\sigma\) 是 sigmoid 函数,\(\varepsilon\) 是一个小的固定常数用于数值稳定性,\(A^l, B^l, C^l, D^l, E^l\) 是线性层。
- 参数:
input_feats (int) – 输入特征大小;即 \(h_{i}^{l}\) 的维度数。
edge_feats (int) – 边特征大小;即 \(e_{ij}^{l}\) 的维度数。
output_feats (int) – 输出特征大小;即 \(h_{i}^{l+1}\) 的维度数。
dropout (float, 可选) – 节点和边特征的 dropout 率。默认值:
0
。batch_norm (bool, 可选) – 是否在节点和边特征上包含批归一化。默认值:
True
。residual (bool, 可选) – 是否包含残差连接。默认值:
True
。activation (可调用激活函数/层 或 None, 可选) – 如果不是 None,则对更新后的节点特征应用激活函数。默认值:
F.relu
。
示例
>>> import dgl >>> import torch as th >>> import torch.nn.functional as F >>> from dgl.nn import GatedGCNConv
>>> num_nodes, num_edges = 8, 30 >>> graph = dgl.rand_graph(num_nodes,num_edges) >>> node_feats = th.rand(num_nodes, 20) >>> edge_feats = th.rand(num_edges, 12) >>> gatedGCN = GatedGCNConv(20, 12, 20) >>> new_node_feats, new_edge_feats = gatedGCN(graph, node_feats, edge_feats) >>> new_node_feats.shape, new_edge_feats.shape (torch.Size([8, 20]), torch.Size([30, 20]))
- forward(graph, feat, edge_feat)[源码]
描述
计算门控图卷积层。
- 参数 graph:
图。
- 类型 graph:
DGLGraph
- 参数 feat:
输入特征,形状为 \((N, D_{in})\),其中 \(N\) 是图的节点数,\(D_{in}\) 是输入特征大小。
- 类型 feat:
torch.Tensor
- 参数 edge_feat:
输入边特征,形状为 \((E, D_{edge})\),其中 \(E\) 是边数,\(D_{edge}\) 是边特征的大小。
- 类型 edge_feat:
torch.Tensor
- 返回:
torch.Tensor – 输出节点特征,形状为 \((N, D_{out})\),其中 \(D_{out}\) 是输出特征大小。
torch.Tensor – 输出边特征,形状为 \((E, D_{out})\),其中 \(D_{out}\) 是输出特征大小。