CuGraphRelGraphConv

class dgl.nn.pytorch.conv.CuGraphRelGraphConv(in_feat, out_feat, num_rels, regularizer=None, num_bases=None, bias=True, self_loop=True, dropout=0.0, apply_norm=False)[source]

基类: CuGraphBaseConv

一个加速的关系图卷积层,来自Modeling Relational Data with Graph Convolutional Networks,它利用了 cugraph-ops 中高度优化的聚合原语。

有关数学模型,请参阅 dgl.nn.pytorch.conv.RelGraphConv

此模块依赖于 pylibcugraphops 包,可以通过 conda install -c nvidia pylibcugraphops=23.04 安装。pylibcugraphops 23.04 需要 python 3.8.x 或 3.10.x。

注意

这是一个实验性功能。

参数:
  • in_feat (int) – 输入特征大小。

  • out_feat (int) – 输出特征大小。

  • num_rels (int) – 关系类型数量。

  • regularizer (str, 可选) –

    要使用的权重正则化器(“basis” 或 None
    • “basis” 用于基分解。

    • None 表示不应用正则化。

    默认值: None

  • num_bases (int, 可选) – 基的数量。当应用正则化器时生效。默认值: None

  • bias (bool, 可选) – 如果添加偏置,则为 True。默认值: True

  • self_loop (bool, 可选) – 如果包含自环消息,则为 True。默认值: True

  • dropout (float, 可选) – Dropout 率。默认值: 0.0

  • apply_norm (bool, 可选) – 如果按每个边类型的目标节点的入度(即 \(|\mathcal{N}^r_i|\))归一化聚合输出,则为 True。默认值: True

示例

>>> import dgl
>>> import torch
>>> from dgl.nn import CuGraphRelGraphConv
...
>>> device = 'cuda'
>>> g = dgl.graph(([0,1,2,3,2,5], [1,2,3,4,0,3])).to(device)
>>> feat = torch.ones(6, 10).to(device)
>>> conv = CuGraphRelGraphConv(
...     10, 2, 3, regularizer='basis', num_bases=2).to(device)
>>> etype = torch.tensor([0,1,2,0,1,2]).to(device)
>>> res = conv(g, feat, etype)
>>> res
tensor([[-1.7774, -2.0184],
        [-1.4335, -2.3758],
        [-1.7774, -2.0184],
        [-0.4698, -3.0876],
        [-1.4335, -2.3758],
        [-1.4331, -2.3295]], device='cuda:0', grad_fn=<AddBackward0>)
forward(g, feat, etypes, max_in_degree=None)[source]

前向计算。

参数:
  • g (DGLGraph) – 图。

  • feat (torch.Tensor) – 节点特征的二维张量。形状: \((|V|, D_{in})\)

  • etypes (torch.Tensor) – 边类型的一维整数张量。形状: \((|E|,)\)。请注意,cugraph-ops 只接受 int32 类型的边类型张量,因此任何其他整数类型的输入都将被转换为 int32,这会引入一些开销。直接传递 int32 张量以获得最佳性能。

  • max_in_degree (int, 可选) – 目标节点的最大入度。仅当 gDGLBlock(即二分图)时有效。当 g 是由邻居采样器生成时,该值应设置为相应的 fanout。如果未给出,则 max_in_degree 将会即时计算。

返回值:

新的节点特征。形状: \((|V|, D_{out})\)

返回类型:

torch.Tensor

reset_parameters()[source]

重新初始化可学习参数。