code: def _sample_log_prob(self, obs, action):
      def atanh(x):
          one_plus_x = (1 + x).clip(min=1e-6)
          one_minus_x = (1 - x).clip(min=1e-6)
          return 0.5 * paddle.log(one_plus_x / one_minus_x)
  
      raw_action = atanh(action)
      act_mean, act_log_std = self.model.policy(obs)
  
      normal = Normal(act_mean, act_log_std.exp())
      log_prob = normal.log_prob(raw_action)
      log_prob -= paddle.log(1 - action.pow(2) + 1e-6)
      return log_prob.sum(-1)
  
file_path: PARL/parl/algorithms/paddle/cql.py
imports: import parl
  import paddle
  from paddle.distribution import Normal
  import paddle.nn.functional
  from parl.utils.utils import check_model_method
  from copy import deepcopy
  import numpy
label_desc: Use image node_id 7 for calling the CQL obj's underlying member method code with example usage: obj._sample_log_prob(obs, action) and returns: log_prob, unknown