docstr: Test with ratio=0 for a deterministic reference impl.
code: def test_dropout_ratio0(
      self, X, in_place, output_mask, engine, gc, dc
  ):
      """Test with ratio=0 for a deterministic reference impl."""
      # TODO(lukeyeager): enable this path when the op is fixed
      if in_place:
          # Skip if trying in-place on GPU
          assume(
              gc.device_type not in {caffe2_pb2.CUDA, caffe2_pb2.HIP}
          )
          # If in-place on CPU, don't compare with GPU
          dc = dc[:1]
      is_test = not output_mask
      op = core.CreateOperator(
          "Dropout",
          ["X"],
          ["X" if in_place else "Y"]
          + (["mask"] if output_mask else []),
          ratio=0.0,
          engine=engine,
          is_test=is_test,
      )
  
      self.assertDeviceChecks(dc, op, [X], [0])
      if not is_test:
          self.assertGradientChecks(gc, op, [X], 0, [0])
  
      def reference_dropout_ratio0(x):
          return (x,) if is_test else (x, np.ones(x.shape, dtype=bool))
  
      self.assertReferenceChecks(
          gc,
          op,
          [X],
          reference_dropout_ratio0,
          # Don't check the mask with cuDNN because it's packed data
          outputs_to_check=None if engine != "CUDNN" else [0],
      )
  
file_path: pytorch/caffe2/python/operator_test/dropout_op_test.py
imports: from hypothesis import assume, given, settings
  import hypothesis.strategies
  import numpy
  from caffe2.proto import caffe2_pb2
  from caffe2.python import core
  import caffe2.python.hypothesis_test_util
  import caffe2.python.serialized_test.serialized_test_util
label_desc: Use image node_id 2 for calling the TestDropout obj's underlying member method code with example usage: obj.test_dropout_ratio0(X, in_place, output_mask, engine, gc, dc) and returns: unknown