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 __init__(self, in_channels: int, num_edge_type: int):
      super(DistMultDecoder, self).__init__()
      self.num_edge_type = num_edge_type
      self.in_channels = in_channels
      self.weight = torch.nn.Parameter(
          torch.Tensor(num_edge_type, in_channels)
      )
  
      self.reset_parameters()
  
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 1 to create a new DistMultDecoder object from inherited base classes: torch.nn with example: obj = DistMultDecoder(in_channels, num_edge_type)