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","]",")","``","`"]
code: def _validate_input_shape_tensor(self, input_shape):
      input_dim = tf.gather(
          input_shape, [ps.rank_from_shape(input_shape) + self.axis]
      )
      if self.split_sizes is None:
          return [
              assert_util.assert_equal(
                  0, tf.math.floormod(input_dim, self.num_splits)
              )
          ]
      else:
          split_sizes = tf.convert_to_tensor(self.split_sizes)
          splits_are_known = tf.reduce_all(
              tf.greater_equal(split_sizes, 0)
          )
          return [
              assert_util.assert_equal(
                  True,
                  (
                      (
                          ~splits_are_known
                          & (
                              tf.reduce_sum(split_sizes) + 1
                              <= input_dim
                          )
                      )
                      | (
                          splits_are_known
                          & tf.equal(
                              input_dim, tf.reduce_sum(split_sizes)
                          )
                      )
                  ),
                  message="The size of the input along `axis` does not match "
                  "`split_sizes`.",
              )
          ]
  
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 20 for calling the Split obj's underlying member method code with example usage: obj._validate_input_shape_tensor(input_shape) and returns: list, list