class_docstr: :param n_step: (int)
      The number of steps to bootstrap the network over. The first N-1 steps actual rewards will be accumulated
      using an exponentially growing discount factor, and the Nth step will be bootstrapped from the network
      prediction.
  
  :param store_transitions_only_when_episodes_are_terminated: (bool)
      If set to True, the transitions will be stored in an Episode object until the episode ends, and just then
      written to the memory. This is useful since we want to calculate the N-step discounted rewards before saving the
      transitions into the memory, and to do so we need the entire episode first.
code: def __init__(self):
      super().__init__()
      self.n_step = 3
  
      # needed for n-step updates to work. i.e. waiting for a full episode to be closed before storing each transition
      self.store_transitions_only_when_episodes_are_terminated = True
  
imports: from typing import Union
  import numpy
  from rl_coach.agents.categorical_dqn_agent import CategoricalDQNAlgorithmParameters, CategoricalDQNAgent, CategoricalDQNAgentParameters
  from rl_coach.agents.dqn_agent import DQNNetworkParameters
  from rl_coach.architectures.head_parameters import RainbowQHeadParameters
  from rl_coach.architectures.middleware_parameters import FCMiddlewareParameters
  from rl_coach.base_parameters import MiddlewareScheme
  from rl_coach.exploration_policies.parameter_noise import ParameterNoiseParameters
  from rl_coach.memories.non_episodic.prioritized_experience_replay import PrioritizedExperienceReplayParameters, PrioritizedExperienceReplay
label_desc: Use image node_id 1 to create a new RainbowDQNAlgorithmParameters object from inherited base classes: CategoricalDQNAlgorithmParameters with example: obj = RainbowDQNAlgorithmParameters()