class_docstr: Split a `Tensor` event along an axis into a list of `Tensor`s.
  
  Example Use:
  
  ```python
  split = tfb.Split(
      num_or_size_splits=[4, 1, 3],
      axis=-1
    )
  y = split.forward(tf.zeros([5, 6, 8]))
  ==> [<`Tensor`, shape=(5, 6, 4)>,
       <`Tensor`, shape=(5, 6, 1)>,
       <`Tensor`, shape=(5, 6, 3)>]
  
  # The inverse of `split` concatenates a list of `Tensor`s along `axis`.
  x_ = split.inverse(y)
  x_.shape
  ==> TensorShape([5, 6, 8])
  ```
class_docstr_tok: ["Split","a","`","Tensor","`","event","along","an","axis","into","a","list","of","`","Tensor","`","s",".","Example","Use",":","``","`","python","split","=","tfb.Split","(","num_or_size_splits=","[","4",",","1",",","3","]",",","axis=-1",")","y","=","split.forward","(","tf.zeros","(","[","5",",","6",",","8","]",")",")","==",">","[","<","`","Tensor","`",",","shape=","(","5",",","6",",","4",")",">",",","<","`","Tensor","`",",","shape=","(","5",",","6",",","1",")",">",",","<","`","Tensor","`",",","shape=","(","5",",","6",",","3",")",">","]","#","The","inverse","of","`","split","`","concatenates","a","list","of","`","Tensor","`","s","along","`","axis","`",".","x_","=","split.inverse","(","y",")","x_.shape","==",">","TensorShape","(","[","5",",","6",",","8","]",")","``","`"]
docstr: Dynamic validations for `output_shapes`.
docstr_tok: ["Dynamic","validations","for","`","output_shapes","`","."]
code: def _validate_output_shape_tensors(self, output_shapes):
      """Dynamic validations for `output_shapes`."""
      assertions = []
      if self.split_sizes is not None:
          split_sizes = tf.convert_to_tensor(self.split_sizes)
          for i, shape in enumerate(output_shapes):
              output_size = tf.gather(
                  shape,
                  [ps.rank_from_shape(output_shapes[0]) + self.axis],
              )
              split_size = split_sizes[i]
              assertions.append(
                  assert_util.assert_equal(
                      True,
                      tf.equal(split_size, -1)
                      | tf.equal(output_size, split_size),
                      message=(
                          "Inverse shape dimension (={}) does not match "
                          "expected `split_size` dimension (={})".format(
                              output_size, split_size
                          )
                      ),
                  )
              )
      return assertions
  
imports: import numbers
  import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import bijector
  from tensorflow_probability.python.internal import assert_util
  from tensorflow_probability.python.internal import parameter_properties
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import tensor_util
  from tensorflow_probability.python.internal import tensorshape_util
label_desc: Use image node_id 22 for calling the Split obj's underlying member method code with example usage: obj._validate_output_shape_tensors(output_shapes) and returns: assertions