class_docstr: The original paper refers to:
      Chen, Yunpeng, et al. "Graph-Based Global Reasoning Networks" (https://arxiv.org/abs/1811.12814)
code: def __init__(
      self,
      in_channels: int,
      num_state: int = 256,
      num_node: int = 84,
      nclass: int = 59,
  ):
      super().__init__()
      self.num_state = num_state
      self.conv_theta = nn.Conv2D(
          in_channels, num_node, kernel_size=1, stride=1, padding=0
      )
      self.conv_phi = nn.Conv2D(
          in_channels, num_state, kernel_size=1, stride=1, padding=0
      )
      self.graph = GraphLayer(num_state, num_node, nclass)
      self.extend_dim = nn.Conv2D(
          num_state, in_channels, kernel_size=1, bias_attr=False
      )
  
      self.bn = layers.SyncBatchNorm(in_channels)
  
imports: import os
  from typing import Union, List, Tuple
  import paddle
  from paddle import nn
  import paddle.nn.functional
  import numpy
  from paddlehub.module.module import moduleinfo
  import paddlehub.vision.segmentation_transforms
  from paddlehub.module.cv_module import ImageSegmentationModule
  from paddleseg.utils import utils
  from paddleseg.models import layers
  from ginet_resnet101vd_cityscapes.resnet import ResNet101_vd
label_desc: Use image node_id 1 to create a new GlobalReasonUnit object from inherited base classes: nn with example: obj = GlobalReasonUnit(in_channels, num_state, num_node, nclass)