class_docstr: Class for handling KGE models which follows the ranking based protocol.
  
  Example
  -------
  >>> # create model and compile using user defined optimizer settings and
  >>> # user defined settings of an existing loss
  >>> from ampligraph.datasets import load_fb15k_237
  >>> from ampligraph.latent_features import ScoringBasedEmbeddingModel
  >>> from ampligraph.latent_features.loss_functions import SelfAdversarialLoss
  >>> import tensorflow as tf
  >>> X = load_fb15k_237()
  >>> loss = SelfAdversarialLoss({'margin': 0.1, 'alpha': 5, 'reduction': 'sum'})
  >>> model = ScoringBasedEmbeddingModel(eta=5,
  >>>                                    k=300,
  >>>                                    scoring_type='ComplEx',
  >>>                                    seed=0)
  >>> model.compile(optimizer='adam', loss=loss)
  >>> model.fit(X['train'],
  >>>           batch_size=10000,
  >>>           epochs=5)
  Epoch 1/5
  29/29 [==============================] - 3s 87ms/step - loss: 13496.5752
  Epoch 2/5
  29/29 [==============================] - 1s 36ms/step - loss: 13488.8682
  Epoch 3/5
  29/29 [==============================] - 1s 35ms/step - loss: 13436.2725
  Epoch 4/5
  29/29 [==============================] - 1s 35ms/step - loss: 13259.0840
  Epoch 5/5
  29/29 [==============================] - 1s 34ms/step - loss: 12977.0117
class_docstr_tok: ["Class","for","handling","KGE","models","which","follows","the","ranking","based","protocol",".","Example","--","--","--","-",">",">",">","#","create","model","and","compile","using","user","defined","optimizer","settings","and",">",">",">","#","user","defined","settings","of","an","existing","loss",">",">",">","from","ampligraph.datasets","import","load_fb15k_237",">",">",">","from","ampligraph.latent_features","import","ScoringBasedEmbeddingModel",">",">",">","from","ampligraph.latent_features.loss_functions","import","SelfAdversarialLoss",">",">",">","import","tensorflow","as","tf",">",">",">","X","=","load_fb15k_237","(",")",">",">",">","loss","=","SelfAdversarialLoss","(","{","'margin","'",":","0.1",",","'alpha","'",":","5",",","'reduction","'",":","'sum","'","}",")",">",">",">","model","=","ScoringBasedEmbeddingModel","(","eta=5",",",">",">",">","k=300",",",">",">",">","scoring_type='ComplEx","'",",",">",">",">","seed=0",")",">",">",">","model.compile","(","optimizer='adam","'",",","loss=loss",")",">",">",">","model.fit","(","X","[","'train","'","]",",",">",">",">","batch_size=10000",",",">",">",">","epochs=5",")","Epoch","1\/5","29\/29","[","==============================","]","-","3s","87ms\/step","-","loss",":","13496.5752","Epoch","2\/5","29\/29","[","==============================","]","-","1s","36ms\/step","-","loss",":","13488.8682","Epoch","3\/5","29\/29","[","==============================","]","-","1s","35ms\/step","-","loss",":","13436.2725","Epoch","4\/5","29\/29","[","==============================","]","-","1s","35ms\/step","-","loss",":","13259.0840","Epoch","5\/5","29\/29","[","==============================","]","-","1s","34ms\/step","-","loss",":","12977.0117"]
docstr: Get the embedding matrix during evaluation.
  
  Parameters
  ----------
  part number: int
      Specifies which part to return from the ``number_of_parts`` in which the entire embedding matrix is split.
  number_of_parts: int
      Total number of parts in which to split the embedding matrix.
  
  Returns
  -------
  emb_matrix: np.array, shape (n,k)
      Part of the embedding matrix corresponding to `part_number`.
  start_index: int
      Original entity index (data dict) of the first row of the `emb_matrix`.
  end_index: int
      Original entity index (data dict) of the last row of the `emb_matrix`.
docstr_tok: ["Get","the","embedding","matrix","during","evaluation",".","Parameters","--","--","--","--","--","part","number",":","int","Specifies","which","part","to","return","from","the","``","number_of_parts","``","in","which","the","entire","embedding","matrix","is","split",".","number_of_parts",":","int","Total","number","of","parts","in","which","to","split","the","embedding","matrix",".","Returns","--","--","--","-","emb_matrix",":","np.array",",","shape","(","n",",","k",")","Part","of","the","embedding","matrix","corresponding","to","`","part_number","`",".","start_index",":","int","Original","entity","index","(","data","dict",")","of","the","first","row","of","the","`","emb_matrix","`",".","end_index",":","int","Original","entity","index","(","data","dict",")","of","the","last","row","of","the","`","emb_matrix","`","."]
code: def get_emb_matrix_test(self, part_number=1, number_of_parts=1):
      """Get the embedding matrix during evaluation.
  
      Parameters
      ----------
      part number: int
          Specifies which part to return from the ``number_of_parts`` in which the entire embedding matrix is split.
      number_of_parts: int
          Total number of parts in which to split the embedding matrix.
  
      Returns
      -------
      emb_matrix: np.array, shape (n,k)
          Part of the embedding matrix corresponding to `part_number`.
      start_index: int
          Original entity index (data dict) of the first row of the `emb_matrix`.
      end_index: int
          Original entity index (data dict) of the last row of the `emb_matrix`.
  
      """
      if number_of_parts == 1:
          if self.entities_subset.shape[0] != 0:
              out = tf.nn.embedding_lookup(
                  self.encoding_layer.ent_emb, self.entities_subset
              )
          else:
              out = self.encoding_layer.ent_emb
          return out, 0, out.shape[0] - 1
      else:
          with shelve.open(
              self.partitioner_metadata["ent_map_fname"]
          ) as ent_partition:
              batch_size = int(
                  np.ceil(len(ent_partition.keys()) / number_of_parts)
              )
              indices = np.arange(
                  part_number * batch_size,
                  (part_number + 1) * batch_size,
              ).astype(str)
              emb_matrix = []
              for idx in indices:
                  try:
                      emb_matrix.append(ent_partition[idx])
                  except KeyError:
                      break
              return (
                  np.array(emb_matrix),
                  int(indices[0]),
                  int(indices[-1]),
              )
  
imports: import tensorflow
  import copy
  import shelve
  import pickle
  import numpy
  import os
  import tempfile
  import logging
  from ampligraph.evaluation.metrics import mrr_score, hits_at_n_score, mr_score
  from ampligraph.datasets import data_adapter
  from ampligraph.datasets.partitioned_data_manager import PartitionDataManager
  from ampligraph.latent_features.layers.scoring.AbstractScoringLayer import SCORING_LAYER_REGISTRY
  from ampligraph.latent_features.layers.encoding import EmbeddingLookupLayer
  from ampligraph.latent_features.layers.calibration import CalibrationLayer
  from ampligraph.latent_features.layers.corruption_generation import CorruptionGenerationLayerTrain
  from ampligraph.datasets.data_indexer import DataIndexer
  from ampligraph.latent_features import optimizers
  from ampligraph.latent_features import loss_functions
  from ampligraph.evaluation import train_test_split_no_unseen
  from tensorflow.python.keras import callbacks
  from tensorflow.python.keras.engine import training_utils
  from tensorflow.python.eager import def_function
  from tensorflow.python.keras import metrics
  from tensorflow.python.keras.engine import compile_utils
label_desc: Use image node_id 27 for calling the ScoringBasedEmbeddingModel obj's underlying member method code with example usage: obj.get_emb_matrix_test(part_number, number_of_parts) and returns: out,  int,  unknown, np,  int,  int