class_docstr: Scales an input normalized action distribution to match spec bounds.
  
  Unlike the normal distribution computed when NormalProjectionNetwork
  is called with scale_distribution=False, which merely squashes the mean
  of the distribution to within the action spec, this distribution scales the
  output distribution to ensure that the output action fits within the spec.
  
  This distribution also maintains the input normal distribution, and uses this
  distribution to compute the KL-divergence between two SquashToSpecNormal
  distributions provided that they were scaled by the same action spec.
  This is possible as KL divergence is invariant when both distributions are
  transformed using the same invertible function.
  
  Formally, let a be the action magnitude and b be the action mean. The
  squashing operation performs the following change of variables to the
  input distribution X:
  
  Y = a * tanh(X) + b
  
  Note that this is a change of variables as the function is invertible, with:
  
  X = tan((Y - b) / a), where Y in (b - a, b + a)
class_docstr_tok: ["Scales","an","input","normalized","action","distribution","to","match","spec","bounds",".","Unlike","the","normal","distribution","computed","when","NormalProjectionNetwork","is","called","with","scale_distribution=False",",","which","merely","squashes","the","mean","of","the","distribution","to","within","the","action","spec",",","this","distribution","scales","the","output","distribution","to","ensure","that","the","output","action","fits","within","the","spec",".","This","distribution","also","maintains","the","input","normal","distribution",",","and","uses","this","distribution","to","compute","the","KL-divergence","between","two","SquashToSpecNormal","distributions","provided","that","they","were","scaled","by","the","same","action","spec",".","This","is","possible","as","KL","divergence","is","invariant","when","both","distributions","are","transformed","using","the","same","invertible","function",".","Formally",",","let","a","be","the","action","magnitude","and","b","be","the","action","mean",".","The","squashing","operation","performs","the","following","change","of","variables","to","the","input","distribution","X",":","Y","=","a","*","tanh","(","X",")","+","b","Note","that","this","is","a","change","of","variables","as","the","function","is","invertible",",","with",":","X","=","tan","(","(","Y","-","b",")","\/","a",")",",","where","Y","in","(","b","-","a",",","b","+","a",")"]
docstr: Compute event shape tensor of the SquashToSpecNormal distribution.
docstr_tok: ["Compute","event","shape","tensor","of","the","SquashToSpecNormal","distribution","."]
code: def event_shape_tensor(self, name="event_shape_tensor"):
      """Compute event shape tensor of the SquashToSpecNormal distribution."""
      return self._squashed_distribution.event_shape_tensor(name)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import inspect
  from typing import Any, Mapping, Text, Type
  import numpy
  import tensorflow
  import tensorflow_probability
  from tf_agents.distributions import tanh_bijector_stable
  from tf_agents.specs import tensor_spec
  from tf_agents.typing import types
  from tf_agents.utils import common
  from tf_agents.utils import nest_utils
label_desc: Use image node_id 11 for calling the SquashToSpecNormal obj's underlying member method code with example usage: obj.event_shape_tensor(name) and returns: self