class_docstr: The layer that switches two of the blob dimensions,
  moving the data inside accordingly.
  
  :param input_layer: The input layer and the number of its output. If no number
      is specified, the first output will be connected.
  :type input_layer: object, tuple(object, int)
  :param first_dim: One of the dimensions that should be switched.   
  :type first_dim: str, {"batch_length", "batch_width", "list_size", 
                  "height", "width", "depth", "channels"}
  :param second_dim: The other dimension that should be switched.
  :type second_dim: str, {"batch_length", "batch_width", "list_size", 
                  "height", "width", "depth", "channels"}
  :param name: The layer name.
  :type name: str, default=None
  
  .. rubric:: Layer inputs:
  
  (1) a data blob to be transposed, of any size.
  
  .. rubric:: Layer outputs:
  
  (1) the result of transposition.
code: def __init__(
      self,
      input_layer,
      first_dim="height",
      second_dim="width",
      name=None,
  ):
      if type(input_layer) is PythonWrapper.Transpose:
          super().__init__(input_layer)
          return
  
      layers, outputs = check_input_layers(input_layer, 1)
  
      first_index = self.dimensions.index(first_dim)
      second_index = self.dimensions.index(second_dim)
  
      internal = PythonWrapper.Transpose(
          str(name),
          layers[0],
          int(outputs[0]),
          int(first_index),
          int(second_index),
      )
      super().__init__(internal)
  
file_path: neoml/NeoML/Python/neoml/Dnn/Transpose.py
imports: import neoml.PythonWrapper
  from .Dnn import Layer
  from neoml.Utils import check_input_layers
label_desc: Use image node_id 1 to create a new Transpose object from inherited base classes: Layer with example: obj = Transpose(input_layer, first_dim, second_dim, name)