code: def sample(self, obs):
      act_mean, act_log_std = self.model.policy(obs)
      normal = Normal(act_mean, act_log_std.exp())
      # for reparameterization trick  (mean + std*N(0,1))
      x_t = normal.rsample()
      action = torch.tanh(x_t)
  
      log_prob = normal.log_prob(x_t)
      log_prob -= torch.log((1 - action.pow(2)) + 1e-6)
      log_prob = log_prob.sum(1, keepdims=True)
      return action, log_prob
  
file_path: PARL/parl/algorithms/torch/oac.py
imports: import parl
  import torch
  import math
  from torch.distributions import Normal
  import torch.nn.functional
  from parl.utils.utils import check_model_method
  from copy import deepcopy
label_desc: Use image node_id 3 for calling the OAC obj's underlying member method code with example usage: obj.sample(obs) and returns: action,  log_prob