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)))
    random_tensor = (keep_prob + torch.rand(shape, dtype=x.dtype, device=x.device))
    random_tensor.floor_()
    output = (x.div(keep_prob) * random_tensor)
    return output
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)))
    random_tensor = (keep_prob + torch.rand(shape, dtype=x.dtype, device=x.device))
    random_tensor.floor_()
    output = (x.div(keep_prob) * random_tensor)
    return output