class_docstr: The layer that randomly sets some elements of the single input to 0.
  If the input BatchLength is greater than 1, all elements 
  along the same BatchLength coordinate will use the same mask.
  When the network is not being trained (for example, during a test run),
  the dropout will not happen.
  
  :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 rate: The proportion of elements that will be set to 0.
  :type rate: float, [0..1]
  :param spatial: Turns on and off the spatial dropout mode. 
      When True, the whole contents of a channel will be filled with zeros,
      instead of elements one by one.
      Useful for convolutional networks.
  :type spatial: bool, default=False
  :param batchwise: Turns on and off the batchwise dropout mode.
      When True, the same mask will be used along the same BatchWidth.
      Useful for large input size.
  :type batchwise: bool, default=False
  :param name: The layer name.
  :type name: str, default=None
  
  .. rubric:: Layer inputs:
  
  (1) a data blob of any dimensions.
  
  .. rubric:: Layer outputs:
  
  (1) a blob of the same dimensions, with some of the elements set to 0,
      during training only.
      When you run the network, this layer does nothing.
code: def __init__(
      self,
      input_layer,
      rate=0.5,
      spatial=False,
      batchwise=False,
      name=None,
  ):
      if type(input_layer) is PythonWrapper.Dropout:
          super().__init__(input_layer)
          return
  
      layers, outputs = check_input_layers(input_layer, 1)
  
      if rate < 0 or rate >= 1:
          raise ValueError("The `rate` must be in [0, 1).")
  
      internal = PythonWrapper.Dropout(
          str(name),
          layers[0],
          int(outputs[0]),
          float(rate),
          bool(spatial),
          bool(batchwise),
      )
      super().__init__(internal)
  
file_path: neoml/NeoML/Python/neoml/Dnn/Dropout.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 Dropout object from inherited base classes: Layer with example: obj = Dropout(input_layer, rate, spatial, batchwise, name)