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: Static validations for `input_shape`.
docstr_tok: ["Static","validations","for","`","input_shape","`","."]
code: def _validate_input_shape(self, input_shape):
      """Static validations for `input_shape`."""
      input_shape_ = tf.get_static_value(input_shape)
      if input_shape_ is None:
          return False
  
      input_split_dim_ = input_shape_[tf.get_static_value(self.axis)]
      # If `split_sizes` is not provided, then we can provide static validation if
      # `input_split_dim` is statically known.
      if self.split_sizes is None:
          if input_split_dim_ is not None:
              if input_split_dim_ % self.num_splits > 0:
                  raise ValueError(
                      "The number of splits ({}) must divide the `axis` "
                      "dimension of `input_shape` ({})".format(
                          self.num_splits, input_split_dim_
                      )
                  )
              return True
          return False
      else:
          split_sizes_ = tf.get_static_value(self.split_sizes)
          if input_split_dim_ is not None and split_sizes_ is not None:
              if np.any(split_sizes_ == -1):
                  if (
                      np.sum(split_sizes_[split_sizes_ != -1])
                      > input_split_dim_
                  ):
                      raise ValueError(
                          "The size of the input along `axis` must be "
                          "greater than the sum of the specified dimensions "
                          "of `split_sizes` if `split_sizes` is not fully "
                          "specified."
                      )
              elif input_split_dim_ != sum(split_sizes_):
                  raise ValueError(
                      "The size of the input along `axis` must equal the "
                      "sum of `split_sizes`."
                  )
              return True
          return False
  
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 19 for calling the Split obj's underlying member method code with example usage: obj._validate_input_shape(input_shape) and returns: False, False, False, True, True