class_docstr: A base module for KGE models.
  
  Subclasses of :class:`Model` can decide however they want on how to store entities' and
  relations' representations, how they want to be looked up, and how they should
  be scored. The :class:`OModel` provides a commonly used interface for models storing entity
  and relation representations in the form of :class:`pykeen.nn.Embedding`.
class_docstr_tok: ["A","base","module","for","KGE","models",".","Subclasses","of",":","class",":","`","Model","`","can","decide","however","they","want","on","how","to","store","entities","'","and","relations","'","representations",",","how","they","want","to","be","looked","up",",","and","how","they","should","be","scored",".","The",":","class",":","`","OModel","`","provides","a","commonly","used","interface","for","models","storing","entity","and","relation","representations","in","the","form","of",":","class",":","`","pykeen.nn.Embedding","`","."]
docstr: Forward pass using left side (head) prediction for obtaining scores of all possible heads.
  
  This method calculates the score for all possible heads for each (relation, tail) pair.
  
  .. note::
  
      If the model has been trained with inverse relations, the task of predicting
      the head entities becomes the task of predicting the tail entities of the
      inverse triples, i.e., $f(*,r,t)$ is predicted by means of $f(t,r_{inv},*)$.
  
  Additionally, the model is set to evaluation mode.
  
  :param rt_batch: shape: (batch_size, 2), dtype: long
      The indices of (relation, tail) pairs.
  :param kwargs:
      additional keyword-based parameters passed to :meth:`Model.score_h`
  
  :return: shape: (batch_size, num_heads), dtype: float
      For each r-t pair, the scores for all possible heads.
docstr_tok: ["Forward","pass","using","left","side","(","head",")","prediction","for","obtaining","scores","of","all","possible","heads",".","This","method","calculates","the","score","for","all","possible","heads","for","each","(","relation",",","tail",")","pair",".","..","note",":",":","If","the","model","has","been","trained","with","inverse","relations",",","the","task","of","predicting","the","head","entities","becomes","the","task","of","predicting","the","tail","entities","of","the","inverse","triples",",","i.e.",",","$","f","(","*",",","r",",","t",")","$","is","predicted","by","means","of","$","f","(","t",",","r_","{","inv","}",",","*",")","$",".","Additionally",",","the","model","is","set","to","evaluation","mode",".",":","param","rt_batch",":","shape",":","(","batch_size",",","2",")",",","dtype",":","long","The","indices","of","(","relation",",","tail",")","pairs",".",":","param","kwargs",":","additional","keyword-based","parameters","passed","to",":","meth",":","`","Model.score_h","`",":","return",":","shape",":","(","batch_size",",","num_heads",")",",","dtype",":","float","For","each","r-t","pair",",","the","scores","for","all","possible","heads","."]
code: def predict_h(
      self,
      rt_batch: torch.LongTensor,
      **kwargs,
  ) -> torch.FloatTensor:
      """Forward pass using left side (head) prediction for obtaining scores of all possible heads.
  
      This method calculates the score for all possible heads for each (relation, tail) pair.
  
      .. note::
  
          If the model has been trained with inverse relations, the task of predicting
          the head entities becomes the task of predicting the tail entities of the
          inverse triples, i.e., $f(*,r,t)$ is predicted by means of $f(t,r_{inv},*)$.
  
      Additionally, the model is set to evaluation mode.
  
      :param rt_batch: shape: (batch_size, 2), dtype: long
          The indices of (relation, tail) pairs.
      :param kwargs:
          additional keyword-based parameters passed to :meth:`Model.score_h`
  
      :return: shape: (batch_size, num_heads), dtype: float
          For each r-t pair, the scores for all possible heads.
      """
      self.eval()  # Enforce evaluation mode
      rt_batch = self._prepare_batch(batch=rt_batch, index_relation=0)
      if self.use_inverse_triples:
          scores = self.score_h_inverse(rt_batch=rt_batch, **kwargs)
      else:
          scores = self.score_h(rt_batch, **kwargs)
      if self.predict_with_sigmoid:
          scores = torch.sigmoid(scores)
      return scores
  
imports: from __future__ import annotations
  import inspect
  import logging
  import os
  import pickle
  from abc import ABC, abstractmethod
  from typing import Any, ClassVar, Iterable, Mapping, Optional, Type, Union
  import torch
  from class_resolver import HintOrType
  from docdata import parse_docdata
  from torch import nn
  from ..inverse import RelationInverter, relation_inverter_resolver
  from ..losses import Loss, MarginRankingLoss, loss_resolver
  from ..triples import KGInfo
  from ..typing import LABEL_HEAD, LABEL_RELATION, LABEL_TAIL, InductiveMode, MappedTriples, Target
  from ..utils import NoRandomSeedNecessary, get_preferred_device, set_random_seed
label_desc: Use image node_id 23 for calling the Model obj's underlying member method code with example usage: obj.predict_h(rt_batch) and returns: scores