code: def drop_path(x, drop_prob: float = 0.0, training: bool = False):
      """Drop paths (Stochastic Depth) per sample (when applied in main path of residual blocks).
  
      This is the same as the DropConnect impl I created for EfficientNet, etc networks, however,
      the original name is misleading as 'Drop Connect' is a different form of dropout in a separate paper...
      See discussion: https://github.com/tensorflow/tpu/issues/494#issuecomment-532968956 ... I've opted for
      changing the layer and argument names to 'drop path' rather than mix DropConnect as a layer name and use
      'survival rate' as the argument.
  
      Args:
          drop_prob (float, optional): probability of dropping path, defaults 0.0.
          training (bool, optional): whether in training progress, defaults 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 = keep_prob + torch.rand(
          shape, dtype=x.dtype, device=x.device
      )
      random_tensor.floor_()  # binarize
      output = x.div(keep_prob) * random_tensor
      return output
  
imports: import math
  from typing import Callable
  import torch
  import torch.nn.functional
  from torch import Tensor
  from torch import nn
  from torch.nn.parameter import Parameter
  from colossalai.legacy.context import seed
  from colossalai.legacy.registry import LAYERS
  from colossalai.nn import init
  from colossalai.utils.device import get_current_device
  from ..utils import to_2tuple
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