class_docstr: ACER model that consists of a separate policy and V-function.
  
  Args:
      pi (Policy): Policy.
      q (QFunction): Q-function.
class_docstr_tok: ["ACER","model","that","consists","of","a","separate","policy","and","V-function",".","Args",":","pi","(","Policy",")",":","Policy",".","q","(","QFunction",")",":","Q-function","."]
code: def forward(self, obs):
      action_distrib = self.pi(obs)
      action_value = self.q(obs)
      v = (action_distrib.probs * action_value.q_values).sum(1)
      return action_distrib, action_value, v
  
imports: import copy
  from logging import getLogger
  import numpy
  import torch
  from torch import nn
  from pfrl import agent
  from pfrl.action_value import SingleActionValue
  from pfrl.utils import clip_l2_grad_norm_, copy_param
  from pfrl.utils.batch_states import batch_states
  from pfrl.utils.mode_of_distribution import mode_of_distribution
  from pfrl.utils.recurrent import detach_recurrent_state, one_step_forward
label_desc: Use image node_id 2 for calling the ACERDiscreteActionHead obj's underlying member method code with example usage: obj.forward(obs) and returns: action_distrib,  action_value,  v