class_docstr: Multiclass Negative Log-Likelihood loss.
  
  Introduced in :cite:`chen2015`, this loss can be used when both the subject and objects are corrupted
  (to use it, pass ``corrupt_sides=['s,o']`` in the embedding model parameters).
  
  This loss was re-engineered in :cite:`kadlecBK17` where only the object was corrupted to get improved
  performance (to use it in this way pass ``corrupt_sides ='o'`` in the embedding model parameters).
  
  .. math::
  
      \mathcal{L(X)} = -\sum_{x_{e_1,e_2,r_k} \in X} log\,p(e_2|e_1,r_k)
       -\sum_{x_{e_1,e_2,r_k} \in X} log\,p(e_1|r_k, e_2)
  
  Example
  -------
  >>> import ampligraph.latent_features.loss_functions as lfs
  >>> loss = lfs.NLLMulticlass({'reduction': 'mean'})
  >>> isinstance(loss, lfs.NLLMulticlass)
  True
  
  >>> loss = lfs.get('multiclass_nll')
  >>> isinstance(loss, lfs.NLLMulticlass)
  True
class_docstr_tok: ["Multiclass","Negative","Log-Likelihood","loss",".","Introduced","in",":","cite",":","`","chen2015","`",",","this","loss","can","be","used","when","both","the","subject","and","objects","are","corrupted","(","to","use","it",",","pass","``","corrupt_sides=","[","'s",",","o","'","]","``","in","the","embedding","model","parameters",")",".","This","loss","was","re-engineered","in",":","cite",":","`","kadlecBK17","`","where","only","the","object","was","corrupted","to","get","improved","performance","(","to","use","it","in","this","way","pass","``","corrupt_sides","=","'","o","'","``","in","the","embedding","model","parameters",")",".","..","math",":",":","\\mathcal","{","L","(","X",")","}","=","-\\sum_","{","x_","{","e_1",",","e_2",",","r_k","}","\\in","X","}","log\\",",","p","(","e_2|e_1",",","r_k",")","-\\sum_","{","x_","{","e_1",",","e_2",",","r_k","}","\\in","X","}","log\\",",","p","(","e_1|r_k",",","e_2",")","Example","--","--","--","-",">",">",">","import","ampligraph.latent_features.loss_functions","as","lfs",">",">",">","loss","=","lfs.NLLMulticlass","(","{","'reduction","'",":","'mean","'","}",")",">",">",">","isinstance","(","loss",",","lfs.NLLMulticlass",")","True",">",">",">","loss","=","lfs.get","(","'multiclass_nll","'",")",">",">",">","isinstance","(","loss",",","lfs.NLLMulticlass",")","True"]
docstr: Verifies and stores the hyperparameters needed by the algorithm.
  
  Parameters
  ----------
  hyperparam_dict : dict
      The Loss will check the keys to get the corresponding parameters.
docstr_tok: ["Verifies","and","stores","the","hyperparameters","needed","by","the","algorithm",".","Parameters","--","--","--","--","--","hyperparam_dict",":","dict","The","Loss","will","check","the","keys","to","get","the","corresponding","parameters","."]
code: def _init_hyperparams(self, hyperparam_dict={}):
      """Verifies and stores the hyperparameters needed by the algorithm.
  
      Parameters
      ----------
      hyperparam_dict : dict
          The Loss will check the keys to get the corresponding parameters.
      """
      pass
  
imports: import abc
  import logging
  import six
  import tensorflow
  from tensorflow.python.keras import metrics
  from tensorflow.python.keras.utils import losses_utils
  from tensorflow.python.ops import math_ops
label_desc: Use image node_id 2 for calling the NLLMulticlass obj's underlying member method code with example usage: obj._init_hyperparams(hyperparam_dict) without return types