# TAGConv¶

class dgl.nn.pytorch.conv.TAGConv(in_feats, out_feats, k=2, bias=True, activation=None)[source]

Bases: torch.nn.modules.module.Module

Topology Adaptive Graph Convolutional layer from Topology Adaptive Graph Convolutional Networks

$H^{K} = {\sum}_{k=0}^K (D^{-1/2} A D^{-1/2})^{k} X {\Theta}_{k},$

where $$A$$ denotes the adjacency matrix, $$D_{ii} = \sum_{j=0} A_{ij}$$ its diagonal degree matrix, $${\Theta}_{k}$$ denotes the linear weights to sum the results of different hops together.

Parameters
• in_feats (int) – Input feature size. i.e, the number of dimensions of $$X$$.

• out_feats (int) – Output feature size. i.e, the number of dimensions of $$H^{K}$$.

• k (int, optional) – Number of hops $$K$$. Default: 2.

• bias (bool, optional) – If True, adds a learnable bias to the output. Default: True.

• activation (callable activation function/layer or None, optional) – If not None, applies an activation function to the updated node features. Default: None.

lin

The learnable linear module.

Type

torch.Module

Example

>>> import dgl
>>> import numpy as np
>>> import torch as th
>>> from dgl.nn import TAGConv
>>>
>>> g = dgl.graph(([0,1,2,3,2,5], [1,2,3,4,0,3]))
>>> feat = th.ones(6, 10)
>>> conv = TAGConv(10, 2, k=2)
>>> res = conv(g, feat)
>>> res
tensor([[ 0.5490, -1.6373],
[ 0.5490, -1.6373],
[ 0.5490, -1.6373],
[ 0.5513, -1.8208],
[ 0.5215, -1.6044],
[ 0.3304, -1.9927]], grad_fn=<AddmmBackward>)

forward(graph, feat, edge_weight=None)[source]

Compute topology adaptive graph convolution.

Parameters
• graph (DGLGraph) – The graph.

• feat (torch.Tensor) – The input feature of shape $$(N, D_{in})$$ where $$D_{in}$$ is size of input feature, $$N$$ is the number of nodes.

• edge_weight (torch.Tensor, optional) – edge_weight to use in the message passing process. This is equivalent to using weighted adjacency matrix in the equation above, and $$\tilde{D}^{-1/2}\tilde{A} \tilde{D}^{-1/2}$$ is based on dgl.nn.pytorch.conv.graphconv.EdgeWeightNorm.

Returns

The output feature of shape $$(N, D_{out})$$ where $$D_{out}$$ is size of output feature.

Return type

torch.Tensor

reset_parameters()[source]

Reinitialize learnable parameters.

Note

The model parameters are initialized using Glorot uniform initialization.