class_docstr: DQN that allows maxQ also backpropagate gradients.
code: def _compute_target_values(self, exp_batch):
      batch_next_state = exp_batch["next_state"]
      if self.recurrent:
          target_next_qout, _ = self.model.n_step_forward(
              batch_next_state,
              exp_batch["next_recurrent_state"],
              output_mode="concat",
          )
      else:
          target_next_qout = self.model(batch_next_state)
  
      next_q_max = target_next_qout.max
  
      batch_rewards = exp_batch["reward"]
      batch_terminal = exp_batch["is_state_terminal"]
      batch_discount = exp_batch["discount"]
  
      return (
          batch_rewards
          + batch_discount * (1.0 - batch_terminal) * next_q_max
      )
  
file_path: chainerrl/chainerrl/agents/residual_dqn.py
imports: from chainerrl.agents.dqn import DQN
  from chainerrl.functions import scale_grad
label_desc: Use image node_id 3 for calling the ResidualDQN obj's underlying member method code with example usage: obj._compute_target_values(exp_batch) and returns: unknown