code: def hybrid_forward(self, F, x):
      if not mx.autograd.is_training() or self.drop_prob <= 0:
          return x
      gamma = (
          self.drop_prob
          * (self.h * self.w)
          / (self.block_size**2)
          / (
              (self.w - self.block_size + 1)
              * (self.h - self.block_size + 1)
          )
      )
      # generate mask
      mask = (
          F.random.uniform(
              0, 1, shape=(1, self.c, self.h, self.w), dtype=self.dtype
          )
          < gamma
      )
      mask = F.Pooling(
          mask,
          pool_type="max",
          kernel=(self.block_size, self.block_size),
          pad=self.padding,
      )
      mask = 1 - mask
      y = F.broadcast_mul(
          F.broadcast_mul(x, mask),
          (
              1.0
              * self.numel
              / mask.sum(axis=0, exclude=True)
              .expand_dims(1)
              .expand_dims(1)
              .expand_dims(1)
          ),
      )
      return y
  
file_path: gluon-cv/gluoncv/nn/dropblock.py
imports: from functools import partial
  import mxnet
  from mxnet.gluon.nn import HybridBlock
label_desc: Use image node_id 2 for calling the DropBlock obj's underlying member method code with example usage: obj.hybrid_forward(F, x) and returns: y, x