class_docstr: The ImplicitModelTrainer class implements logics for basic recommender training and evaluation using users' 
  *implicit feedback*. 
  
  Parameters
  ----------
  batch_size: int
      Training batch size.
  test_batch_size: int
      Test/Evaluation batch size (number of users per testing batch).
  train_dataset: Dataset
      Dataset for model training.
  model: Recommender
      The target recommender.
  sampler: Sampler
      The sampler for model training.
  item_serving_size: int, optional
      Test/Evaluation batch size (number of items per testing batch).
  
  Notes  
  -----
  
  The function :code:`train` should be called for model training and evaluation.
class_docstr_tok: ["The","ImplicitModelTrainer","class","implements","logics","for","basic","recommender","training","and","evaluation","using","users","'","*","implicit","feedback","*",".","Parameters","--","--","--","--","--","batch_size",":","int","Training","batch","size",".","test_batch_size",":","int","Test\/Evaluation","batch","size","(","number","of","users","per","testing","batch",")",".","train_dataset",":","Dataset","Dataset","for","model","training",".","model",":","Recommender","The","target","recommender",".","sampler",":","Sampler","The","sampler","for","model","training",".","item_serving_size",":","int",",","optional","Test\/Evaluation","batch","size","(","number","of","items","per","testing","batch",")",".","Notes","--","--","-","The","function",":","code",":","`","train","`","should","be","called","for","model","training","and","evaluation","."]
code: def _evaluate_full(self, eval_dataset):
      metric_results = {}
      for evaluator in self._eval_manager.evaluators:
          metric_results[evaluator.name] = []
  
      for itr in tqdm(
          range(
              int(
                  math.ceil(
                      float(eval_dataset.unique_user_count())
                      / self._test_batch_size
                  )
              )
          )
      ):
          users = eval_dataset.get_unique_user_list()[
              itr
              * self._test_batch_size : (itr + 1)
              * self._test_batch_size
          ]
          scores = self._score_full_items(users=users)
          for u_ind, user in enumerate(users):
              result = self._eval_manager.full_eval(
                  pos_samples=list(
                      eval_dataset.get_interactions_by_user_gb_item(
                          user
                      )
                  ),
                  excl_pos_samples=self._excluded_positives[user],
                  predictions=scores[u_ind],
              )
              for key in result:
                  metric_results[key].append(result[key])
  
      return metric_results
  
file_path: openrec/openrec/tf1/legacy/implicit_model_trainer.py
imports: from __future__ import print_function
  from tqdm import tqdm
  import math
  from termcolor import colored
  import numpy
  from openrec.tf1.legacy.utils.evaluators import ImplicitEvalManager
  import sys
  import json
  import pickle
label_desc: Use image node_id 5 for calling the ImplicitModelTrainer obj's underlying member method code with example usage: obj._evaluate_full(eval_dataset) and returns: metric_results