class_docstr: Bijector which applies a list of bijectors to blocks of a `Tensor`.
  
  More specifically, given [F_0, F_1, ... F_n] which are scalar or vector
  bijectors this bijector creates a transformation which operates on the vector
  [x_0, ... x_n] with the transformation [F_0(x_0), F_1(x_1) ..., F_n(x_n)]
  where x_0, ..., x_n are blocks (partitions) of the vector.
  
  Example Use:
  
  ```python
  blockwise = tfb.Blockwise(
      bijectors=[tfb.Exp(), tfb.Sigmoid()], block_sizes=[2, 1]
    )
  y = blockwise.forward(x)
  
  # Equivalent to:
  x_0, x_1 = tf.split(x, [2, 1], axis=-1)
  y_0 = tfb.Exp().forward(x_0)
  y_1 = tfb.Sigmoid().forward(x_1)
  y = tf.concat([y_0, y_1], axis=-1)
  ```
  
  Keyword arguments can be passed to the inner bijectors by utilizing the inner
  bijector names, e.g.:
  
  ```python
  blockwise = tfb.Blockwise([Bijector1(name='b1'), Bijector2(name='b2')])
  y = blockwise.forward(x, b1={'arg': 1}, b2={'arg': 2})
  
  # Equivalent to:
  x_0, x_1 = tf.split(x, [1, 1], axis=-1)
  y_0 = Bijector1().forward(x_0, arg=1)
  y_1 = Bijector2().forward(x_1, arg=2)
  y = tf.concat([y_0, y_1], axis=-1)
  ```
code: def _forward_event_shape(self, input_shape):
      if not self._maybe_changes_size:
          return input_shape
      input_shape = tensorshape_util.with_rank_at_least(input_shape, 1)
      static_block_sizes = tf.get_static_value(self.inverse_block_sizes)
      if static_block_sizes is None:
          return tensorshape_util.concatenate(input_shape[:-1], [None])
      output_size = sum(static_block_sizes)
      return tensorshape_util.concatenate(
          input_shape[:-1], [output_size]
      )
  
imports: import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import bijector
  from tensorflow_probability.python.bijectors import chain
  from tensorflow_probability.python.bijectors import composition
  from tensorflow_probability.python.bijectors import invert
  from tensorflow_probability.python.bijectors import joint_map
  from tensorflow_probability.python.bijectors import split
  from tensorflow_probability.python.internal import assert_util
  from tensorflow_probability.python.internal import auto_composite_tensor
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import tensorshape_util
  from tensorflow.python.util import nest
label_desc: Use image node_id 11 for calling the _Blockwise obj's underlying member method code with example usage: obj._forward_event_shape(input_shape) and returns: tensorshape_util, input_shape, tensorshape_util