code: def _infer_all_output_dims(self, inputs):
      
      # Use tensorflow shape op to manipulate inputs shape, so that unknown batch
      # size - which can happen when using input placeholders - is handled
      # correcly.
      batch_size = tf.expand_dims(tf.shape(inputs)[0], 0)
      out_channels = (self.output_channels,)
  
      # Height dim needs to be added to everything for 1D Conv
      # as we'll be using the 2D Conv Transpose op.
      if self._n == 1:
        out_shape = (1,) + self.output_shape
      else:
        out_shape = self.output_shape
  
      if self._data_format.startswith("NC"):
        out_shape_tuple = out_channels + out_shape
      elif self._data_format.startswith("N") and self._data_format.endswith("C"):
        out_shape_tuple = out_shape + out_channels
  
      output_shape = tf.concat([batch_size, out_shape_tuple], 0)
      return output_shape
docs: Calculate the output shape for `inputs` after a deconvolution.
  
      Args:
        inputs: A Tensor of shape `data_format` and of type `tf.float16`,
            `tf.bfloat16` or `tf.float32`.
  
      Returns:
        output_shape: A tensor of shape (`batch_size`, `conv_output_shape`).