code: def _dropout(
      X: np.ndarray,
      drop_probability: float = 0.5,
      seed: Optional[int] = None,
      training_mode: bool = False,
      return_mask: bool = False,
  ) -> Tuple[np.ndarray]:
      if drop_probability == 0 or not training_mode:
          if return_mask:
              return X, np.ones(X.shape, dtype=bool)  # type: ignore
          return (X,)
  
      rnd = RandomState(seed)
      mask = rnd.uniform(0, 1.0, X.shape) >= drop_probability
      scale = 1.0 / (1.0 - drop_probability)
      return (
          (mask * X * scale, mask.astype(bool))
          if return_mask
          else (mask * X * scale,)
      )
  
file_path: onnx/onnx/reference/ops/op_dropout.py
imports: from typing import Optional, Tuple
  import numpy
  from numpy.random import RandomState
  from onnx.reference.op_run import OpRun
label_desc: Use image node_id 1 for calling a global function with example usage: _dropout(X, drop_probability, seed, training_mode, return_mask) and returns: unknown, X, X,  np