code: def PermuteDimsBetweenDataFormats(
      dims, data_format_src, data_format_dst
  ):
      """Get new shape for converting between data formats."""
  
      valid_data_formats = [
          "NHWC",
          "NCHW",
          "HWNC",
          "HWCN",
          "NDHWC",
          "NCDHW",
      ]
      if len(data_format_src) != len(data_format_dst):
          raise ValueError(
              "data_format_src and data_format_dst must have the same dimension, got"
              " %s and %s."
              % (len(data_format_src), len(data_format_dst))
          )
      if data_format_src not in valid_data_formats:
          raise ValueError(
              "data_format_src must be of %s, got %s."
              % (valid_data_formats, data_format_src)
          )
      if data_format_dst not in valid_data_formats:
          raise ValueError(
              "data_format_dst must be of %s, got %s."
              % (valid_data_formats, data_format_dst)
          )
      if len(dims) != 4 and len(dims) != 5:
          raise ValueError(
              "dims must be of length 4 or 5, got %s." % dims
          )
      if len(dims) != len(data_format_src):
          raise ValueError(
              "dims must be the same dimensions as data_format_src (%s), got %s."
              % (len(data_format_src), dims)
          )
  
      if data_format_src == data_format_dst:
          return dims
  
      dim_map = {d: i for i, d in enumerate(data_format_src)}
      permuted_dims = [dims[dim_map[d]] for d in data_format_dst]
      return permuted_dims
  
imports: import numpy
  from six.moves import range
label_desc: Use image node_id 2 for calling a global function with example usage: PermuteDimsBetweenDataFormats(dims, data_format_src, data_format_dst) and returns: permuted_dims, dims