code: def _test_alpha_dropout(self, cls, input):
      mean = input.mean()
      std = input.std()
  
      for p in [0.2, 0.5, 0.8]:
          module = cls(p)
          input_var = input.detach().clone().requires_grad_()
          output = module(input_var)
          # output mean should be close to input mean
          self.assertLess(abs(output.data.mean() - mean), 0.1)
          # output std should be close to input std
          self.assertLess(abs(output.data.std() - std), 0.1)
          output.backward(input)
  
imports: from itertools import product
  import unittest
  import random
  import itertools
  import torch
  from torch.testing._internal.common_utils import run_tests, set_default_dtype, instantiate_parametrized_tests, TEST_PRIVATEUSE1
  from torch.testing._internal.common_cuda import TEST_CUDA
  from torch.testing._internal.common_nn import NNTestCase, freeze_rng_state
  from torch.testing._internal.common_device_type import instantiate_device_type_tests, expectedFailureXLA
  import torch.nn.functional
  import torch.nn
label_desc: Use image node_id 1 for calling the TestDropoutNN obj's underlying member method code with example usage: obj._test_alpha_dropout(cls, input) without return types