class_docstr: The layer that splits an input blob along the Depth dimension.
  
  :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 sizes: The sizes of the first one, two, or three parts. 
      The final part size is what's left.  
  :type sizes: array of int, up to 3 elements
  :param name: The layer name.
  :type name: str, default=None
  
  .. rubric:: Layer inputs:
  
  (1) a blob with input data.
      The dimensions:
  
      - **Depth** should not be less than the sum of sizes array elements.
  
  .. rubric:: Layer outputs:
  
  The layer has at least len(sizes) outputs.
  The dimensions:
  
      - **Depth** equals the corresponding element of sizes array, 
        for the last output it is input **Depth** minus the sum of sizes
      - all other dimensions are the same as for the input
code: def __init__(self, input_layer, sizes, name=None):
      if type(input_layer) is PythonWrapper.SplitDepth:
          super().__init__(input_layer)
          return
  
      layers, outputs = check_input_layers(input_layer, 1)
  
      s = numpy.array(sizes, dtype=numpy.int32, copy=False)
  
      if s.size > 3:
          raise ValueError(
              "The `sizes` must contain not more than 3 elements."
          )
  
      if numpy.any(s < 0):
          raise ValueError(
              "The `sizes` must contain only positive values."
          )
  
      internal = PythonWrapper.SplitDepth(
          str(name), layers[0], int(outputs[0]), s
      )
      super().__init__(internal)
  
imports: import neoml.PythonWrapper
  from .Dnn import Layer
  from neoml.Utils import check_input_layers
  import numpy
label_desc: Use image node_id 1 to create a new SplitDepth object from inherited base classes: Layer with example: obj = SplitDepth(input_layer, sizes, name)