class_docstr: Dynamic Policy Programming.
  
  See: https://arxiv.org/abs/1004.2027.
class_docstr_tok: ["Dynamic","Policy","Programming",".","See",":","https",":","\/\/arxiv.org\/abs\/1004.2027","."]
code: def _compute_target_values(self, exp_batch):
      batch_next_state = exp_batch["next_state"]
  
      if self.recurrent:
          target_next_qout, _ = pack_and_forward(
              self.target_model,
              batch_next_state,
              exp_batch["next_recurrent_state"],
          )
      else:
          target_next_qout = self.target_model(batch_next_state)
      next_q_expect = self._l_operator(target_next_qout)
  
      batch_rewards = exp_batch["reward"]
      batch_terminal = exp_batch["is_state_terminal"]
  
      return (
          batch_rewards
          + exp_batch["discount"] * (1 - batch_terminal) * next_q_expect
      )
  
imports: from abc import ABCMeta, abstractmethod
  import torch
  from pfrl.agents.dqn import DQN
  from pfrl.utils.recurrent import pack_and_forward
label_desc: Use image node_id 2 for calling the AbstractDPP obj's underlying member method code with example usage: obj._compute_target_values(exp_batch) and returns: unknown