mindspore_gl.nn.GatedGraphConv

class mindspore_gl.nn.GatedGraphConv(in_feat_size: int, out_feat_size: int, n_steps: int, n_etype: int, bias=True)[源代码]

门控图卷积层。来自论文 Gated Graph Sequence Neural Networks

\[ \begin{align}\begin{aligned}\begin{split}h_{i}^{0} = [ x_i \| \mathbf{0} ] \\\end{split}\\\begin{split}a_{i}^{t} = \sum_{j\in\mathcal{N}(i)} W_{e_{ij}} h_{j}^{t} \\\end{split}\\h_{i}^{t+1} = \mathrm{GRU}(a_{i}^{t}, h_{i}^{t})\end{aligned}\end{align} \]
参数:
  • in_feat_size (int) - 输入节点特征大小。

  • out_feat_size (int) - 输出节点特征大小。

  • n_steps (int) - 步骤数。

  • n_etype (int) - 边类型的数量。

  • bias (bool) - 是否使用偏差。默认值:True。

输入:
  • x (Tensor) - 输入节点特征。Shape为 \((N,*)\) 其中 \(N\) 是节点数, \(*\) 可以是任何形状。

  • src_idx (List) - 每个边类型的源索引。

  • dst_idx (List) - 每个边类型的目标索引。

  • n_nodes (int) - 整个图的节点数。

  • n_edges (List) - 每个边类型的边数。

输出:
  • Tensor,输出节点特征。Shape为 \((N,out\_feat\_size)\)

异常:
  • TypeError - 如果 in_feat_size 不是正整数。

  • TypeError - 如果 out_feat_size 不是正整数。

  • TypeError - 如果 n_steps 不是正整数。

  • TypeError - 如果 n_etype 不是正整数。

  • TypeError - 如果 bias 不是bool。

支持平台:

Ascend GPU

样例:

>>>import mindspore as ms >>>from mindspore_gl.nn import GatedGraphConv >>>from mindspore_gl import GraphField >>>feat_size = 16 >>>n_nodes = 4 >>>h = ms.ops.Ones()((n_nodes, feat_size), ms.float32) >>>src_idx = [ms.Tensor([0, 1, 2, 3], ms.int32), ms.Tensor([0, 0, 1, 1], ms.int32), … ms.Tensor([0, 0, 1, 2, 3], ms.int32), ms.Tensor([2, 3, 3, 0, 1], ms.int32), … ms.Tensor([0, 1, 2, 3], ms.int32), ms.Tensor([2, 0, 2, 1], ms.int32)] >>>dst_idx = [ms.Tensor([0, 0, 1, 1], ms.int32), ms.Tensor([0, 1, 2, 3], ms.int32), … ms.Tensor([2, 3, 3, 0, 1], ms.int32), ms.Tensor([0, 0, 1, 2, 3], ms.int32), … ms.Tensor([2, 0, 2, 1], ms.int32), ms.Tensor([0, 1, 2, 3], ms.int32)] >>>n_edges = [4, 4, 5, 5, 4, 4] >>>conv = GatedGraphConv(feat_size, 16, 2, 6, True) >>>ret = conv(h, src_idx, dst_idx, n_nodes, n_edges) >>>print(ret.shape) (4, 16)