code: def sample(self, obs):
      mean, log_std = self.actor.policy(obs)
      std = layers.exp(log_std)
      normal = Normal(mean, std)
      x_t = normal.sample([1])[0]
      y_t = layers.tanh(x_t)
      action = y_t * self.max_action
      log_prob = normal.log_prob(x_t)
      log_prob -= layers.log(
          self.max_action * (1 - layers.pow(y_t, 2)) + epsilon
      )
      log_prob = layers.reduce_sum(log_prob, dim=1, keep_dim=True)
      log_prob = layers.squeeze(log_prob, axes=[1])
      return action, log_prob
  
file_path: PARL/parl/algorithms/fluid/sac.py
imports: from parl.core.fluid import layers
  from copy import deepcopy
  import numpy
  from paddle import fluid
  from paddle.fluid.layers import Normal
  from parl.core.fluid.algorithm import Algorithm
label_desc: Use image node_id 3 for calling the SAC obj's underlying member method code with example usage: obj.sample(obs) and returns: action,  log_prob