code: def sample(self, obs, decay_exploration=True):
      sample = np.random.random()
      if sample < self.exploration:
          act = np.random.randint(self.act_dim)
      else:
          if np.random.random() < 0.01:
              act = np.random.randint(self.act_dim)
          else:
              obs = np.expand_dims(obs, axis=0)
              pred_Q = self.fluid_executor.run(
                  self.pred_program,
                  feed={"obs": obs.astype("float32")},
                  fetch_list=[self.value],
              )[0]
              pred_Q = np.squeeze(pred_Q, axis=0)
              act = np.argmax(pred_Q)
      if decay_exploration:
          self.exploration = max(0.1, self.exploration - 1e-6)
      return act
  
file_path: PARL/benchmark/fluid/Prioritized_DQN/atari_agent.py
imports: import numpy
  import paddle.fluid
  import parl
  from parl import layers
label_desc: Use image node_id 3 for calling the AtariAgent obj's underlying member method code with example usage: obj.sample(obs, decay_exploration) and returns: act