class_docstr: The skip connection operations from the
  `"DeepGCNs: Can GCNs Go as Deep as CNNs?"
  <https://arxiv.org/abs/1904.03751>`_ and `"All You Need to Train Deeper
  GCNs" <https://arxiv.org/abs/2006.07739>`_ papers.
  The implemented skip connections includes the pre-activation residual
  connection (:obj:`"res+"`), the residual connection (:obj:`"res"`),
  the dense connection (:obj:`"dense"`) and no connections (:obj:`"plain"`).
  
  * **Res+** (:obj:`"res+"`):
  
  .. math::
      \text{Normalization}\to\text{Activation}\to\text{Dropout}\to
      \text{GraphConv}\to\text{Res}
  
  * **Res** (:obj:`"res"`) / **Dense** (:obj:`"dense"`) / **Plain**
    (:obj:`"plain"`):
  
  .. math::
      \text{GraphConv}\to\text{Normalization}\to\text{Activation}\to
      \text{Res/Dense/Plain}\to\text{Dropout}
  
  .. note::
  
      For an example of using :obj:`GENConv`, see
      `examples/ogbn_proteins_deepgcn.py
      <https://github.com/pyg-team/pytorch_geometric/blob/master/examples/
      ogbn_proteins_deepgcn.py>`_.
  
  Args:
      conv (torch.nn.Module, optional): the GCN operator.
          (default: :obj:`None`)
      norm (torch.nn.Module): the normalization layer. (default: :obj:`None`)
      act (torch.nn.Module): the activation layer. (default: :obj:`None`)
      block (str, optional): The skip connection operation to use
          (:obj:`"res+"`, :obj:`"res"`, :obj:`"dense"` or :obj:`"plain"`).
          (default: :obj:`"res+"`)
      dropout (float, optional): Whether to apply or dropout.
          (default: :obj:`0.`)
      ckpt_grad (bool, optional): If set to :obj:`True`, will checkpoint this
          part of the model. Checkpointing works by trading compute for
          memory, since intermediate activations do not need to be kept in
          memory. Set this to :obj:`True` in case you encounter out-of-memory
          errors while going deep. (default: :obj:`False`)
class_docstr_tok: ["The","skip","connection","operations","from","the","`","``","DeepGCNs",":","Can","GCNs","Go","as","Deep","as","CNNs","?","''","<","https",":","\/\/arxiv.org\/abs\/1904.03751",">","`","_","and","`","``","All","You","Need","to","Train","Deeper","GCNs","''","<","https",":","\/\/arxiv.org\/abs\/2006.07739",">","`","_","papers",".","The","implemented","skip","connections","includes","the","pre-activation","residual","connection","(",":","obj",":","`","``","res+","''","`",")",",","the","residual","connection","(",":","obj",":","`","``","res","''","`",")",",","the","dense","connection","(",":","obj",":","`","``","dense","''","`",")","and","no","connections","(",":","obj",":","`","``","plain","''","`",")",".","*","*","*","Res+","*","*","(",":","obj",":","`","``","res+","''","`",")",":","..","math",":",":","\\text","{","Normalization","}","\\to\\text","{","Activation","}","\\to\\text","{","Dropout","}","\\to","\\text","{","GraphConv","}","\\to\\text","{","Res","}","*","*","*","Res","*","*","(",":","obj",":","`","``","res","''","`",")","\/","*","*","Dense","*","*","(",":","obj",":","`","``","dense","''","`",")","\/","*","*","Plain","*","*","(",":","obj",":","`","``","plain","''","`",")",":","..","math",":",":","\\text","{","GraphConv","}","\\to\\text","{","Normalization","}","\\to\\text","{","Activation","}","\\to","\\text","{","Res\/Dense\/Plain","}","\\to\\text","{","Dropout","}","..","note",":",":","For","an","example","of","using",":","obj",":","`","GENConv","`",",","see","`","examples\/ogbn_proteins_deepgcn.py","<","https",":","\/\/github.com\/pyg-team\/pytorch_geometric\/blob\/master\/examples\/","ogbn_proteins_deepgcn.py",">","`","_",".","Args",":","conv","(","torch.nn.Module",",","optional",")",":","the","GCN","operator",".","(","default",":",":","obj",":","`","None","`",")","norm","(","torch.nn.Module",")",":","the","normalization","layer",".","(","default",":",":","obj",":","`","None","`",")","act","(","torch.nn.Module",")",":","the","activation","layer",".","(","default",":",":","obj",":","`","None","`",")","block","(","str",",","optional",")",":","The","skip","connection","operation","to","use","(",":","obj",":","`","``","res+","''","`",",",":","obj",":","`","``","res","''","`",",",":","obj",":","`","``","dense","''","`","or",":","obj",":","`","``","plain","''","`",")",".","(","default",":",":","obj",":","`","``","res+","''","`",")","dropout","(","float",",","optional",")",":","Whether","to","apply","or","dropout",".","(","default",":",":","obj",":","`","0.","`",")","ckpt_grad","(","bool",",","optional",")",":","If","set","to",":","obj",":","`","True","`",",","will","checkpoint","this","part","of","the","model",".","Checkpointing","works","by","trading","compute","for","memory",",","since","intermediate","activations","do","not","need","to","be","kept","in","memory",".","Set","this","to",":","obj",":","`","True","`","in","case","you","encounter","out-of-memory","errors","while","going","deep",".","(","default",":",":","obj",":","`","False","`",")"]
code: def __repr__(self) -> str:
      return f"{self.__class__.__name__}(block={self.block})"
  
file_path: pytorch_geometric/torch_geometric/nn/models/deepgcn.py
imports: from typing import Optional
  import torch
  import torch.nn.functional
  from torch import Tensor
  from torch.nn import Module
  from torch.utils.checkpoint import checkpoint
label_desc: Use image node_id 4 for calling the DeepGCNLayer obj's underlying member method code with example usage: obj.__repr__() and returns: self, str, self, str