TWIRLSConv

class dgl.nn.pytorch.conv.TWIRLSConv(input_d, output_d, hidden_d, prop_step, num_mlp_before=1, num_mlp_after=1, norm='none', precond=True, alp=0, lam=1, attention=False, tau=0.2, T=-1, p=1, use_eta=False, attn_bef=False, dropout=0.0, attn_dropout=0.0, inp_dropout=0.0)[source]

Bases: Module

卷积与迭代重加权最小二乘法结合,来自 Graph Neural Networks Inspired by Classical Iterative Algorithms

Parameters:
  • input_d (int) – 输入特征的数量。

  • output_d (int) – 输出特征的数量。

  • hidden_d (int) – 隐藏层的大小。

  • prop_step (int) – 传播步骤的数量

  • num_mlp_before (int) – 传播前的mlp层数。默认值:1

  • num_mlp_after (int) – 传播后的mlp层数。默认值:1

  • norm (str) – mlp层内部的归一化层类型。可以是 'batch', 'layer''none'. 默认值: 'none'

  • precond (str) – 如果为True,使用预处理和非归一化的拉普拉斯,否则不使用预处理并使用归一化的拉普拉斯。默认值:True

  • alp (float) – 论文中的\(\alpha\)。如果等于\(0\),将根据其他超参数自动决定。默认值:0

  • lam (float) – 论文中的 \(\lambda\)。默认值:1

  • 注意 (bool) – 如果为 True,则在传播过程中添加一个注意力层。默认值:False

  • tau (float) – 论文中的 \(\tau\)。默认值:0.2

  • T (float) – 论文中的\(T\)。如果小于0,\(T\)将被设置为infty。默认值:-1

  • p (float) – 论文中的\(p\)。默认值:1

  • use_eta (bool) – 如果为 True,则在注意力机制的每个维度上添加一个可学习的权重。默认值为 False

  • attn_bef (bool) – 如果为 True,在传播之前添加另一个注意力层。默认值:False

  • dropout (float) – mlp层中的dropout率。默认值:0.0

  • attn_dropout (float) – 注意力值的丢弃率。默认值:0.0

  • inp_dropout (float) – 输入特征的丢弃率。默认值:0.0

注意

add_self_loop 将在传播之前自动调用。

示例

>>> import dgl
>>> from dgl.nn import TWIRLSConv
>>> import torch as th
>>> g = dgl.graph(([0,1,2,3,2,5], [1,2,3,4,0,3]))
>>> feat = th.ones(6, 10)
>>> conv = TWIRLSConv(10, 2, 128, prop_step = 64)
>>> res = conv(g , feat)
>>> res.size()
torch.Size([6, 2])
forward(graph, feat)[source]

Description

运行TWIRLS前向。

param graph:

图表。

type graph:

DGLGraph

param feat:

初始节点特征。

type feat:

torch.Tensor

returns:

输出特征

rtype:

torch.Tensor

注意

  • 输入形状:\((N, \text{input_d})\) 其中 \(N\) 是节点的数量。

  • 输出形状:\((N, \text{output_d})\).