docstr: correct squash operation (in case of bounded actions) according to appendix C in the paper.
  NOTE : this correction assume the squash is done with tanh.
  :param actions: unbounded actions
  :return: the correction to be applied to the log_prob of the actions, assuming tanh squash
docstr_tok: ["correct","squash","operation","(","in","case","of","bounded","actions",")","according","to","appendix","C","in","the","paper",".","NOTE",":","this","correction","assume","the","squash","is","done","with","tanh",".",":","param","actions",":","unbounded","actions",":","return",":","the","correction","to","be","applied","to","the","log_prob","of","the","actions",",","assuming","tanh","squash"]
code: def _squash_correction(self, actions):
      """
      correct squash operation (in case of bounded actions) according to appendix C in the paper.
      NOTE : this correction assume the squash is done with tanh.
      :param actions: unbounded actions
      :return: the correction to be applied to the log_prob of the actions, assuming tanh squash
      """
      if not self.squash:
          return 0
      return tf.reduce_sum(
          tf.log(1 - tf.tanh(actions) ** 2 + eps), axis=1
      )
  
file_path: coach/rl_coach/architectures/tensorflow_components/heads/sac_head.py
imports: import tensorflow
  from rl_coach.architectures.tensorflow_components.layers import Dense
  from rl_coach.architectures.tensorflow_components.heads.head import Head
  from rl_coach.base_parameters import AgentParameters
  from rl_coach.core_types import ActionProbabilities
  from rl_coach.spaces import SpacesDefinition
  from rl_coach.utils import eps
label_desc: Use image node_id 3 for calling the SACPolicyHead obj's underlying member method code with example usage: obj._squash_correction(actions) and returns: tf, int