class_docstr: The DistMult model from the `"Embedding Entities and Relations for
  Learning and Inference in Knowledge Bases"
  <https://arxiv.org/abs/1412.6575>`_ paper.
  
  :class:`DistMult` models relations as diagonal matrices, which simplifies
  the bi-linear interaction between the head and tail entities to the score
  function:
  
  .. math::
      d(h, r, t) = < \mathbf{e}_h,  \mathbf{e}_r, \mathbf{e}_t >
  
  .. note::
  
      For an example of using the :class:`DistMult` model, see
      `examples/kge_fb15k_237.py
      <https://github.com/pyg-team/pytorch_geometric/blob/master/examples/
      kge_fb15k_237.py>`_.
  
  Args:
      num_nodes (int): The number of nodes/entities in the graph.
      num_relations (int): The number of relations in the graph.
      hidden_channels (int): The hidden embedding size.
      margin (float, optional): The margin of the ranking loss.
          (default: :obj:`1.0`)
      sparse (bool, optional): If set to :obj:`True`, gradients w.r.t. to
          the embedding matrices will be sparse. (default: :obj:`False`)
code: def __init__(
      self,
      num_nodes: int,
      num_relations: int,
      hidden_channels: int,
      margin: float = 1.0,
      sparse: bool = False,
  ):
      super().__init__(
          num_nodes, num_relations, hidden_channels, sparse
      )
  
      self.margin = margin
  
      self.reset_parameters()
  
file_path: pytorch_geometric/torch_geometric/nn/kge/distmult.py
imports: import torch
  import torch.nn.functional
  from torch import Tensor
  from torch_geometric.nn.kge import KGEModel
label_desc: Use image node_id 1 to create a new DistMult object from inherited base classes: KGEModel with example: obj = DistMult(num_nodes, num_relations, hidden_channels, margin, sparse)