code: def drop_path(x, drop_prob: float = 0.0, training: bool = False):
      if drop_prob == 0.0 or not training:
          return x
      keep_prob = 1 - drop_prob
      shape = (x.shape[0],) + (1,) * (
          x.ndim - 1
      )  # work with diff dim tensors, not just 2D ConvNets
      random_tensor = x.new_empty(shape).bernoulli_(keep_prob)
      if keep_prob > 0.0:
          random_tensor.div_(keep_prob)
      output = x * random_tensor
      return output
  
imports: from torch import nn
label_desc: Use image node_id 1 for calling a global function with example usage: drop_path(x, drop_prob, training) and returns: output, x