class_docstr: Layer that concatenates a list of inputs.
  
  It takes as input a list of tensors, all of the same shape except
  for the concatenation axis, and returns a single tensor that is the
  concatenation of all inputs.
  
  >>> x = np.arange(20).reshape(2, 2, 5)
  >>> print(x)
  [[[ 0  1  2  3  4]
    [ 5  6  7  8  9]]
   [[10 11 12 13 14]
    [15 16 17 18 19]]]
  >>> y = np.arange(20, 30).reshape(2, 1, 5)
  >>> print(y)
  [[[20 21 22 23 24]]
   [[25 26 27 28 29]]]
  >>> tf.keras.layers.Concatenate(axis=1)([x, y])
  <tf.Tensor: shape=(2, 3, 5), dtype=int64, numpy=
  array([[[ 0,  1,  2,  3,  4],
          [ 5,  6,  7,  8,  9],
          [20, 21, 22, 23, 24]],
         [[10, 11, 12, 13, 14],
          [15, 16, 17, 18, 19],
          [25, 26, 27, 28, 29]]])>
  
  >>> x1 = tf.keras.layers.Dense(8)(np.arange(10).reshape(5, 2))
  >>> x2 = tf.keras.layers.Dense(8)(np.arange(10, 20).reshape(5, 2))
  >>> concatted = tf.keras.layers.Concatenate()([x1, x2])
  >>> concatted.shape
  TensorShape([5, 16])
code: def compute_output_shape(self, input_shape):
      if (not isinstance(input_shape, (tuple, list))) or (
          not isinstance(input_shape[0], (tuple, list))
      ):
          # The tf_utils.shape_type_conversion decorator turns tensorshapes
          # into tuples, so we need to verify that `input_shape` is a list/tuple,
          # *and* that the individual elements are themselves shape tuples.
          raise ValueError(
              "A `Concatenate` layer should be called "
              "on a list of inputs."
          )
      input_shapes = input_shape
      output_shape = list(input_shapes[0])
      for shape in input_shapes[1:]:
          if (
              output_shape[self.axis] is None
              or shape[self.axis] is None
          ):
              output_shape[self.axis] = None
              break
          output_shape[self.axis] += shape[self.axis]
      return tuple(output_shape)
  
imports: from tensorflow.python.keras import backend
  from tensorflow.python.keras.engine import base_layer_utils
  from tensorflow.python.keras.engine.base_layer import Layer
  from tensorflow.python.keras.utils import tf_utils
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import array_ops_stack
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn
label_desc: Use image node_id 4 for calling the Concatenate obj's underlying member method code with example usage: obj.compute_output_shape(input_shape) and returns: tuple