class_docstr: Runner for evaluating using a fixed number of episodes rather than steps.
  
  Also restricts data collection to a strict cap,
  following conventions in data-efficient RL research.
class_docstr_tok: ["Runner","for","evaluating","using","a","fixed","number","of","episodes","rather","than","steps",".","Also","restricts","data","collection","to","a","strict","cap",",","following","conventions","in","data-efficient","RL","research","."]
docstr: Save statistics as tensorboard summaries.
  
  Args:
    iteration: int, The current iteration number.
    num_episodes_train: int, number of training episodes run.
    average_reward_train: float, The average training reward.
    norm_score_train: float, average training normalized score.
    num_episodes_eval: int, number of evaluation episodes run.
    average_reward_eval: float, The average evaluation reward.
    norm_score_eval: float, average eval normalized score.
    average_steps_per_second: float, The average number of steps per second.
docstr_tok: ["Save","statistics","as","tensorboard","summaries",".","Args",":","iteration",":","int",",","The","current","iteration","number",".","num_episodes_train",":","int",",","number","of","training","episodes","run",".","average_reward_train",":","float",",","The","average","training","reward",".","norm_score_train",":","float",",","average","training","normalized","score",".","num_episodes_eval",":","int",",","number","of","evaluation","episodes","run",".","average_reward_eval",":","float",",","The","average","evaluation","reward",".","norm_score_eval",":","float",",","average","eval","normalized","score",".","average_steps_per_second",":","float",",","The","average","number","of","steps","per","second","."]
code: def _save_tensorboard_summaries(
      self,
      iteration,
      num_episodes_train,
      average_reward_train,
      norm_score_train,
      num_episodes_eval,
      average_reward_eval,
      norm_score_eval,
      average_steps_per_second,
  ):
      """Save statistics as tensorboard summaries.
  
      Args:
        iteration: int, The current iteration number.
        num_episodes_train: int, number of training episodes run.
        average_reward_train: float, The average training reward.
        norm_score_train: float, average training normalized score.
        num_episodes_eval: int, number of evaluation episodes run.
        average_reward_eval: float, The average evaluation reward.
        norm_score_eval: float, average eval normalized score.
        average_steps_per_second: float, The average number of steps per second.
      """
      with self._summary_writer.as_default():
          tf.summary.scalar(
              "Train/NumEpisodes", num_episodes_train, step=iteration
          )
          tf.summary.scalar(
              "Train/AverageReturns",
              average_reward_train,
              step=iteration,
          )
          tf.summary.scalar(
              "Train/AverageStepsPerSecond",
              average_steps_per_second,
              step=iteration,
          )
          tf.summary.scalar(
              "Eval/NumEpisodes", num_episodes_eval, step=iteration
          )
          tf.summary.scalar(
              "Eval/AverageReturns", average_reward_eval, step=iteration
          )
          if self.log_normalized_scores:
              tf.summary.scalar(
                  "Train/AverageNormalizedScore",
                  norm_score_train,
                  step=iteration,
              )
              tf.summary.scalar(
                  "Eval/NormalizedScore",
                  norm_score_eval,
                  step=iteration,
              )
  
imports: import functools
  import os
  import sys
  import time
  from absl import logging
  from dopamine.discrete_domains import atari_lib
  from dopamine.discrete_domains import iteration_statistics
  from dopamine.discrete_domains import run_experiment
  from dopamine.labs.atari_100k import normalization_utils
  from dopamine.metrics import collector_dispatcher
  from dopamine.metrics import statistics_instance
  import gin
  import jax
  import numpy
  import tensorflow
label_desc: Use image node_id 9 for calling the DataEfficientAtariRunner obj's underlying member method code with example usage: obj._save_tensorboard_summaries(iteration, num_episodes_train, average_reward_train, norm_score_train, num_episodes_eval, average_reward_eval, norm_score_eval, average_steps_per_second) without return types