class_docstr: Runner class to run Tandem RL experiments.
class_docstr_tok: ["Runner","class","to","run","Tandem","RL","experiments","."]
docstr: Run evaluation phase on both passive and active learners.
  
  Args:
    statistics: `IterationStatistics` object which records the experimental
      results. Note - This object is modified by this method.
    agent_type: str, the type of agent to run.
  
  Returns:
    num_episodes: int, The number of episodes run in this phase.
    average_reward: float, The average reward generated in this phase.
docstr_tok: ["Run","evaluation","phase","on","both","passive","and","active","learners",".","Args",":","statistics",":","`","IterationStatistics","`","object","which","records","the","experimental","results",".","Note","-","This","object","is","modified","by","this","method",".","agent_type",":","str",",","the","type","of","agent","to","run",".","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, agent_type="active"):
      """Run evaluation phase on both passive and active learners.
  
      Args:
        statistics: `IterationStatistics` object which records the experimental
          results. Note - This object is modified by this method.
        agent_type: str, the type of agent to run.
  
      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(
          self._evaluation_steps, statistics, "eval", agent_type
      )
      average_return = (
          sum_returns / num_episodes if num_episodes > 0 else 0.0
      )
      logging.info(
          "Average undiscounted return per eval episode (%s): %.2f",
          agent_type,
          average_return,
      )
      statistics.append(
          {f"{agent_type}_eval_average_return": average_return}
      )
      return num_episodes, average_return
  
imports: import sys
  from absl import logging
  from dopamine.discrete_domains import atari_lib
  from dopamine.discrete_domains import gym_lib
  from dopamine.discrete_domains import iteration_statistics
  from dopamine.discrete_domains import run_experiment
  from dopamine.labs.environments.minatar import minatar_env
  from dopamine.labs.tandem_dqn import tandem_dqn_agent
  import gin
  import numpy
  import tensorflow
label_desc: Use image node_id 5 for calling the TandemRunner obj's underlying member method code with example usage: obj._run_eval_phase(statistics, agent_type) and returns: num_episodes,  average_return