class_docstr: Runner for loading/saving replay data.
class_docstr_tok: ["Runner","for","loading\/saving","replay","data","."]
docstr: Runs a full experiment, spread over multiple iterations.
docstr_tok: ["Runs","a","full","experiment",",","spread","over","multiple","iterations","."]
code: def run_experiment(self):
      """Runs a full experiment, spread over multiple iterations."""
      if self._load_replay_dir is not None:
          self._agent.load_fixed_replay(self._load_replay_dir)
      super().run_experiment()
      if self._save_replay:
          save_replay_dir = os.path.join(self._base_dir, "replay_logs")
          self._agent.save_replay(save_replay_dir)
  
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 2 for calling the LoggedDataEfficientAtariRunner obj's underlying member method code with example usage: obj.run_experiment() without return types