code: def _two_piece_normal_sample_bwd(_, aux, dy):
      """The gradients of Two Piece Normal samples w.r.t. `skewness`."""
      skewness, samples = aux
      broadcast_skewness = tf.broadcast_to(skewness, ps.shape(samples))
  
      grad = dy * _two_piece_normal_sample_gradient(
          broadcast_skewness, samples
      )
      # Sum over the sample dimensions. Assume that they are always the first
      # ones.
      num_sample_dimensions = ps.rank(broadcast_skewness) - ps.rank(
          skewness
      )
  
      # None gradients for seed
      return (
          tf.reduce_sum(grad, axis=ps.range(num_sample_dimensions)),
          None,
      )
  
imports: import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import identity
  from tensorflow_probability.python.bijectors import softplus
  from tensorflow_probability.python.distributions import distribution
  from tensorflow_probability.python.internal import assert_util
  from tensorflow_probability.python.internal import custom_gradient
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import parameter_properties
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import reparameterization
  from tensorflow_probability.python.internal import samplers
  from tensorflow_probability.python.internal import special_math
  from tensorflow_probability.python.internal import tensor_util
  from tensorflow_probability.python.math import special
  from tensorflow_probability.python.math.numeric import log1psquare
label_desc: Use image node_id 8 for calling a global function with example usage: _two_piece_normal_sample_bwd(_, aux, dy) and returns: tf,  None