class_docstr: Simple graph convolution layer.
  
  :param in_features: The number of input features.
  :param out_features: The number of output features.
  :param bias: Specify if a bias should be used.
code: def __repr__(self):
      txt = (
          self.__class__.__name__
          + ": ("
          + str(self.in_features)
          + " -> "
          + str(self.out_features)
          + ")"
      )
      if self.bias is not None:
          txt += " (with bias)"
      else:
          txt += " (without bias)"
      return txt
  
imports: from collections import OrderedDict
  from typing import Union, List, Sequence, Dict, Optional, Callable
  import numpy
  import torch
  from torch import nn
  from torch.nn.parameter import Parameter
  from maze.core.annotations import override
  from maze.core.utils.factory import Factory
  from maze.perception.blocks.shape_normalization import ShapeNormalizationBlock
label_desc: Use image node_id 3 for calling the GraphConvLayer obj's underlying member method code with example usage: obj.__repr__() and returns: txt