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: Initialize the subclass.
  
  This checks for all subclasses if they are tagged with :class:`abc.ABC` with :func:`inspect.isabstract`.
  All non-abstract deriving models should have citation information. Subclasses can further override
  ``__init_subclass__``, but need to remember to call ``super().__init_subclass__`` as well so this
  gets run.
  
  :param kwargs:
      ignored keyword-based parameters
docstr_tok: ["Initialize","the","subclass",".","This","checks","for","all","subclasses","if","they","are","tagged","with",":","class",":","`","abc.ABC","`","with",":","func",":","`","inspect.isabstract","`",".","All","non-abstract","deriving","models","should","have","citation","information",".","Subclasses","can","further","override","``","__init_subclass__","``",",","but","need","to","remember","to","call","``","super","(",")",".__init_subclass__","``","as","well","so","this","gets","run",".",":","param","kwargs",":","ignored","keyword-based","parameters"]
code: def __init_subclass__(cls, **kwargs):
      """Initialize the subclass.
  
      This checks for all subclasses if they are tagged with :class:`abc.ABC` with :func:`inspect.isabstract`.
      All non-abstract deriving models should have citation information. Subclasses can further override
      ``__init_subclass__``, but need to remember to call ``super().__init_subclass__`` as well so this
      gets run.
  
      :param kwargs:
          ignored keyword-based parameters
      """
      if not inspect.isabstract(cls):
          parse_docdata(cls)
  
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 3 for calling the Model obj's underlying member method code with example usage: obj.__init_subclass__(cls) without return types