code: def _get_output_shape(
      rank,
      strides,
      padding,
      dilations,
      input_shape,
      output_size,
      filter_shape,
      output_padding=None,
  ):
      """Compute the `output_shape` and `strides` arg used by `conv_transpose`."""
      if output_padding is None:
          output_padding = (None,) * rank
      else:
          output_padding = utils.prepare_tuple_argument(
              output_padding, n=rank, arg_name="output_padding"
          )
          for stride, out_pad in zip(strides, output_padding):
              if out_pad >= stride:
                  raise ValueError(
                      "Stride {} must be greater than output "
                      "padding {}.".format(strides, output_padding)
                  )
      event_shape = []
      for i in range(-rank, 0):
          event_shape.append(
              _deconv_output_length(
                  input_shape[i - 1],
                  filter_size=filter_shape[i],
                  padding=padding,
                  output_padding=output_padding[i],
                  stride=strides[i],
                  dilation=dilations[i],
              )
          )
      event_shape.append(output_size)
      batch_shape = input_shape[: -rank - 1]
      output_shape = ps.concat([batch_shape, event_shape], axis=0)
      strides = ps.pad(strides, paddings=[[1, 1]], constant_values=1)
      return output_shape, strides
  
imports: import tensorflow.compat.v2
  from tensorflow_probability.python.experimental.nn.util import utils
  from tensorflow_probability.python.internal import assert_util
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import prefer_static
label_desc: Use image node_id 12 for calling a global function with example usage: _get_output_shape(rank, strides, padding, dilations, input_shape, output_size, filter_shape, output_padding) and returns: output_shape,  strides