class_docstr: The internal module of a supervertex, which is composed of an internal feature layer and multiple internal
  aggregation layers.
  
  Args:
      in_channels (int): the dimension of node features on this supervertex.
      num_edge_type (int): the number of edge types on this supervertex.
      start_supervertex (bool): whether this supervertex is a start supervertex on the supergraph.
      setting (SuperVertexParaSetting): supervertex parameter settings.
class_docstr_tok: ["The","internal","module","of","a","supervertex",",","which","is","composed","of","an","internal","feature","layer","and","multiple","internal","aggregation","layers",".","Args",":","in_channels","(","int",")",":","the","dimension","of","node","features","on","this","supervertex",".","num_edge_type","(","int",")",":","the","number","of","edge","types","on","this","supervertex",".","start_supervertex","(","bool",")",":","whether","this","supervertex","is","a","start","supervertex","on","the","supergraph",".","setting","(","SuperVertexParaSetting",")",":","supervertex","parameter","settings","."]
docstr: Args:
      x (torch.Tensor): the input node feature embedding.
      edge_index (torch.Tensor): edge index in COO format with shape [2, #edges].
      edge_type (torch.Tensor, optional): one-dimensional relation type for each edge, indexed from 0.
          Defaults to None.
      range_list (torch.Tensor, optional): The index range list of each edge type with shape [num_types, 2].
          Defaults to None.
      edge_weight (torch.Tensor, optional): one-dimensional weight for each edge. Defaults to None.
  
  Note: The internal feature layer is computed in the `forward` function of GripNet class. If the supervertex
  is not a start supervertex, `x` should be the sum or concat of the outputs of the internal feature
  layer and all external aggregation layers.
docstr_tok: ["Args",":","x","(","torch.Tensor",")",":","the","input","node","feature","embedding",".","edge_index","(","torch.Tensor",")",":","edge","index","in","COO","format","with","shape","[","2",",","#","edges","]",".","edge_type","(","torch.Tensor",",","optional",")",":","one-dimensional","relation","type","for","each","edge",",","indexed","from","0",".","Defaults","to","None",".","range_list","(","torch.Tensor",",","optional",")",":","The","index","range","list","of","each","edge","type","with","shape","[","num_types",",","2","]",".","Defaults","to","None",".","edge_weight","(","torch.Tensor",",","optional",")",":","one-dimensional","weight","for","each","edge",".","Defaults","to","None",".","Note",":","The","internal","feature","layer","is","computed","in","the","`","forward","`","function","of","GripNet","class",".","If","the","supervertex","is","not","a","start","supervertex",",","`","x","`","should","be","the","sum","or","concat","of","the","outputs","of","the","internal","feature","layer","and","all","external","aggregation","layers","."]
code: def forward(
      self,
      x: torch.Tensor,
      edge_index: torch.Tensor,
      edge_type: torch.Tensor = None,
      range_list: torch.Tensor = None,
      edge_weight: torch.Tensor = None,
  ) -> torch.Tensor:
      r"""
      Args:
          x (torch.Tensor): the input node feature embedding.
          edge_index (torch.Tensor): edge index in COO format with shape [2, #edges].
          edge_type (torch.Tensor, optional): one-dimensional relation type for each edge, indexed from 0.
              Defaults to None.
          range_list (torch.Tensor, optional): The index range list of each edge type with shape [num_types, 2].
              Defaults to None.
          edge_weight (torch.Tensor, optional): one-dimensional weight for each edge. Defaults to None.
  
      Note: The internal feature layer is computed in the `forward` function of GripNet class. If the supervertex
      is not a start supervertex, `x` should be the sum or concat of the outputs of the internal feature
      layer and all external aggregation layers.
      """
  
      if self.setting.concat_output:
          tmp = []
          tmp.append(x)
  
      if self.multirelational:
          if edge_type is None or range_list is None:
              error_msg = "`edge_type` and `range_list` are not set."
              logging.error(error_msg)
              raise ValueError(error_msg)
  
      # internal feature aggregation layers
      for net in self.inter_agg_layers[:-1]:
          x = (
              net(x, edge_index, edge_type, range_list)
              if self.multirelational
              else net(x, edge_index, edge_weight)
          )
          x = F.relu(x, inplace=True)
          if self.setting.concat_output:
              tmp.append(x)
  
      x = (
          self.inter_agg_layers[-1](
              x, edge_index, edge_type, range_list
          )
          if self.multirelational
          else self.inter_agg_layers[-1](x, edge_index, edge_weight)
      )
  
      x = F.relu(x, inplace=True)
      if self.setting.concat_output:
          tmp.append(x)
          x = torch.cat(tmp, dim=1)
  
      return x
  
imports: import logging
  from typing import Dict
  import torch
  import torch.nn.functional
  from torch.nn import Module
  from kale.embed.gcn import GCNEncoderLayer, RGCNEncoderLayer
  from kale.prepdata.supergraph_construct import SuperGraph, SuperVertex, SuperVertexParaSetting
label_desc: Use image node_id 4 for calling the GripNetInternalModule obj's underlying member method code with example usage: obj.forward(x, edge_index, edge_type, range_list, edge_weight) and returns: x