class_docstr: Build `DistMult
  <https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/ICLR2015_updated.pdf>`_ factorization
  as GripNet decoder in PoSE dataset.
  Copy-paste with slight modifications from https://github.com/NYXFLOWER/GripNet.
  
  Args:
      in_channels (int): the dimension of input feature.
      num_edge_type (int): the number of edge types.
code: def __repr__(self) -> str:
      return (
          "{}: DistMultLayer(in_channels={}, num_relations={})".format(
              self.__class__.__name__,
              self.in_channels,
              self.num_edge_type,
          )
      )
  
imports: from typing import List, Tuple
  import numpy
  import pytorch_lightning
  import torch
  import torch.nn
  import torch.nn.functional
  from kale.embed.gripnet import GripNet
  from kale.evaluate.metrics import auprc_auroc_ap
  from kale.prepdata.graph_negative_sampling import typed_negative_sampling
  from kale.prepdata.supergraph_construct import SuperGraph
  from kale.utils.initialize_nn import bias_init, xavier_init
label_desc: Use image node_id 4 for calling the DistMultDecoder obj's underlying member method code with example usage: obj.__repr__() and returns: str