docstr: Args:
      obs_np: a numpy float32 array of shape ([B] + observation_space).
      Format of image input should be NCHW format.
  
  Returns:
      predict_actions: a numpy int64 array of shape [B]
      behaviour_logits: a numpy float32 array of shape [B, act_dim]
code: def sample(self, obs_np):
      """
      Args:
          obs_np: a numpy float32 array of shape ([B] + observation_space).
          Format of image input should be NCHW format.
  
      Returns:
          predict_actions: a numpy int64 array of shape [B]
          behaviour_logits: a numpy float32 array of shape [B, act_dim]
      """
      obs = paddle.to_tensor(obs_np, dtype="float32")
      probs, behaviour_logits = self.alg.sample(obs)
  
      probs = probs.cpu().numpy()
      sample_actions = np.array(
          [np.random.choice(len(prob), 1, p=prob)[0] for prob in probs]
      )
  
      return sample_actions, behaviour_logits.cpu().numpy()
  
file_path: PARL/examples/IMPALA/atari_agent.py
imports: import numpy
  import parl
  from parl.utils.scheduler import PiecewiseScheduler, LinearDecayScheduler
  import paddle
label_desc: Use image node_id 2 for calling the AtariAgent obj's underlying member method code with example usage: obj.sample(obs_np) and returns: sample_actions,  behaviour_logits