docstr: use the value model to predict Q values
  
  Args: 
      obs_n (list of paddle tensor): all agents' observation, len(agent's num) + shape([B] + shape of obs_n)
      act_n (list of paddle tensor): all agents' action, len(agent's num) + shape([B] + shape of act_n)
      use_target_model (bool): use target_model or not
  
  Returns:
      Q (paddle tensor): Q value of this agent, shape([B])
docstr_tok: ["use","the","value","model","to","predict","Q","values","Args",":","obs_n","(","list","of","paddle","tensor",")",":","all","agents","'","observation",",","len","(","agent","'s","num",")","+","shape","(","[","B","]","+","shape","of","obs_n",")","act_n","(","list","of","paddle","tensor",")",":","all","agents","'","action",",","len","(","agent","'s","num",")","+","shape","(","[","B","]","+","shape","of","act_n",")","use_target_model","(","bool",")",":","use","target_model","or","not","Returns",":","Q","(","paddle","tensor",")",":","Q","value","of","this","agent",",","shape","(","[","B","]",")"]
code: def Q(self, obs_n, act_n, use_target_model=False):
      """use the value model to predict Q values
  
      Args:
          obs_n (list of paddle tensor): all agents' observation, len(agent's num) + shape([B] + shape of obs_n)
          act_n (list of paddle tensor): all agents' action, len(agent's num) + shape([B] + shape of act_n)
          use_target_model (bool): use target_model or not
  
      Returns:
          Q (paddle tensor): Q value of this agent, shape([B])
      """
      if use_target_model:
          return self.target_model.value(obs_n, act_n)
      else:
          return self.model.value(obs_n, act_n)
  
file_path: PARL/parl/algorithms/paddle/maddpg.py
imports: import parl
  import paddle
  import paddle.nn
  import paddle.nn.functional
  from parl.utils.utils import check_model_method
  from copy import deepcopy
label_desc: Use image node_id 4 for calling the MADDPG obj's underlying member method code with example usage: obj.Q(obs_n, act_n, use_target_model) and returns: self, self