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: Creates the bijector.
  
  Args:
    num_or_size_splits: Either a Python integer indicating the number of
      splits along `axis` or a 1-D integer `Tensor` or Python list containing
      the sizes of each output tensor along `axis`. If a list/`Tensor`, it may
      contain at most one value of `-1`, which indicates a split size that is
      unknown and determined from input.
    axis: A negative integer or scalar `int32` `Tensor`. The dimension along
      which to split. Must be negative to enable the bijector to support
      arbitrary batch dimensions. Defaults to -1 (note that this is different
      from the `tf.Split` default of `0`). Must be statically known.
    validate_args: Python `bool` indicating whether arguments should
      be checked for correctness.
    name: Python `str`, name given to ops managed by this object.
docstr_tok: ["Creates","the","bijector",".","Args",":","num_or_size_splits",":","Either","a","Python","integer","indicating","the","number","of","splits","along","`","axis","`","or","a","1-D","integer","`","Tensor","`","or","Python","list","containing","the","sizes","of","each","output","tensor","along","`","axis","`",".","If","a","list\/","`","Tensor","`",",","it","may","contain","at","most","one","value","of","`","-1","`",",","which","indicates","a","split","size","that","is","unknown","and","determined","from","input",".","axis",":","A","negative","integer","or","scalar","`","int32","`","`","Tensor","`",".","The","dimension","along","which","to","split",".","Must","be","negative","to","enable","the","bijector","to","support","arbitrary","batch","dimensions",".","Defaults","to","-1","(","note","that","this","is","different","from","the","`","tf.Split","`","default","of","`","0","`",")",".","Must","be","statically","known",".","validate_args",":","Python","`","bool","`","indicating","whether","arguments","should","be","checked","for","correctness",".","name",":","Python","`","str","`",",","name","given","to","ops","managed","by","this","object","."]
code: def __init__(
      self,
      num_or_size_splits,
      axis=-1,
      validate_args=False,
      name="split",
  ):
      """Creates the bijector.
  
      Args:
        num_or_size_splits: Either a Python integer indicating the number of
          splits along `axis` or a 1-D integer `Tensor` or Python list containing
          the sizes of each output tensor along `axis`. If a list/`Tensor`, it may
          contain at most one value of `-1`, which indicates a split size that is
          unknown and determined from input.
        axis: A negative integer or scalar `int32` `Tensor`. The dimension along
          which to split. Must be negative to enable the bijector to support
          arbitrary batch dimensions. Defaults to -1 (note that this is different
          from the `tf.Split` default of `0`). Must be statically known.
        validate_args: Python `bool` indicating whether arguments should
          be checked for correctness.
        name: Python `str`, name given to ops managed by this object.
      """
      parameters = dict(locals())
      with tf.name_scope(name) as name:
          if isinstance(num_or_size_splits, numbers.Integral):
              self._num_splits = num_or_size_splits
              self._split_sizes = None
          else:
              self._split_sizes = tensor_util.convert_nonref_to_tensor(
                  num_or_size_splits,
                  name="num_or_size_splits",
                  dtype=tf.int32,
                  as_shape_tensor=True,
              )
  
              if tensorshape_util.rank(self._split_sizes.shape) != 1:
                  raise ValueError(
                      "`num_or_size_splits` must be an integer or 1-D `Tensor`."
                  )
  
              num_splits = tensorshape_util.as_list(
                  self._split_sizes.shape
              )[0]
              if num_splits is None:
                  raise ValueError(
                      "If `num_or_size_splits` is a vector of split sizes "
                      "it must have a statically-known number of "
                      "elements."
                  )
              self._num_splits = num_splits
  
          static_axis = tf.get_static_value(axis)
          if static_axis is None:
              raise ValueError("`axis` must be statically known.")
          if static_axis >= 0:
              raise ValueError(
                  "`axis` must be negative. Got {}".format(axis)
              )
  
          self._axis = ps.convert_to_shape_tensor(axis, tf.int32)
  
          super(Split, self).__init__(
              forward_min_event_ndims=-axis,
              inverse_min_event_ndims=[-axis] * self.num_splits,
              is_constant_jacobian=True,
              validate_args=validate_args,
              parameters=parameters,
              name=name,
          )
  
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 1 to create a new Split object from inherited base classes: bijector with example: obj = Split(num_or_size_splits, axis, validate_args, name)