docstr: Args:
      obs: A tensor array of shape [B, C, H, W]
  
  Returns:
      policy_logits: B * ACT_DIM
      values: B
docstr_tok: ["Args",":","obs",":","A","tensor","array","of","shape","[","B",",","C",",","H",",","W","]","Returns",":","policy_logits",":","B","*","ACT_DIM","values",":","B"]
code: def policy_and_value(self, obs):
      """
      Args:
          obs: A tensor array of shape [B, C, H, W]
  
      Returns:
          policy_logits: B * ACT_DIM
          values: B
      """
      obs = obs / 255.0
      conv1 = F.relu(self.conv1(obs))
      conv2 = F.relu(self.conv2(conv1))
      conv3 = F.relu(self.conv3(conv2))
      flatten = self.flatten(conv3)
      fc_output = F.relu(self.fc(flatten))
  
      policy_logits = self.policy_fc(fc_output)
  
      values = self.value_fc(fc_output)
      values = paddle.squeeze(values, axis=1)
      return policy_logits, values
  
file_path: PARL/examples/A2C/atari_model.py
imports: import paddle
  import parl
  import paddle.nn
  import paddle.nn.functional
label_desc: Use image node_id 4 for calling the AtariModel obj's underlying member method code with example usage: obj.policy_and_value(obs) and returns: policy_logits,  values