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_partial(self, eval_dataset):
      metric_results = {}
      for evaluator in self._eval_manager.evaluators:
          metric_results[evaluator.name] = []
  
      to_be_saved = dict()
      to_be_saved["num_negatives"] = self._num_negatives
      to_be_saved["users"] = list()
      to_be_saved["user_items"] = dict()
      to_be_saved["results"] = dict()
      for user in tqdm(eval_dataset.get_unique_user_list()):
          to_be_saved["users"].append(int(user))
          items = self._sampled_negatives[user] + list(
              eval_dataset.get_interactions_by_user_gb_item(user)
          )
          to_be_saved["user_items"][int(user)] = items
          scores = self._score_partial_items(user, items)
          result = self._eval_manager.partial_eval(
              pos_scores=scores[self._num_negatives :],
              neg_scores=scores[: self._num_negatives],
          )
          to_be_saved["results"][int(user)] = scores
          for key in result:
              metric_results[key].append(result[key])
  
      if self._eval_save_prefix:
          with open(
              self._eval_save_prefix + "_evaluate_partial.pickle", "wb"
          ) as tmpf:
              pickle.dump(to_be_saved, tmpf)
  
      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 6 for calling the ImplicitModelTrainer obj's underlying member method code with example usage: obj._evaluate_partial(eval_dataset) and returns: metric_results