class_docstr: Runner for evaluating using a fixed number of episodes rather than steps.
docstr: Run evaluation phase.
  
  Args:
    statistics: `IterationStatistics` object which records the experimental
      results. Note - This object is modified by this method.
  
  Returns:
    num_episodes: int, The number of episodes run in this phase.
    average_reward: float, The average reward generated in this phase.
code: def _run_eval_phase(self, statistics):
      """Run evaluation phase.
  
      Args:
        statistics: `IterationStatistics` object which records the experimental
          results. Note - This object is modified by this method.
  
      Returns:
        num_episodes: int, The number of episodes run in this phase.
        average_reward: float, The average reward generated in this phase.
      """
      # Perform the evaluation phase -- no learning.
      self._agent.eval_mode = True
      _, sum_returns, num_episodes = self._run_one_phase_fix_episodes(
          self._num_eval_episodes, statistics, "eval"
      )
      average_return = (
          sum_returns / num_episodes if num_episodes > 0 else 0.0
      )
      logging.info(
          "Average undiscounted return per evaluation episode: %.2f",
          average_return,
      )
      statistics.append({"eval_average_return": average_return})
      return num_episodes, average_return
  
file_path: dopamine/dopamine/labs/atari_100k/eval_run_experiment.py
imports: import sys
  from absl import logging
  from dopamine.discrete_domains import run_experiment
  import gin
  import jax
label_desc: Use image node_id 5 for calling the MaxEpisodeEvalRunner obj's underlying member method code with example usage: obj._run_eval_phase(statistics) and returns: num_episodes,  average_return