def METHOD_NAME(self, x):
    """ResNet Bottleneck forward function where the layers are randomly
        skipped with probability ``drop_rate`` during training.
    """
    identity = x
    sample = (not self.training) or bool(torch.bernoulli(1 - self.drop_rate))
    if sample:
        out = self.conv1(x)
        out = self.bn1(out)
        out = self.relu(out)
        out = self.conv2(out)
        out = self.bn2(out)
        out = self.relu(out)
        out = self.conv3(out)
        out = self.bn3(out)
        if not self.training:
            out = out * (1 - self.drop_rate)
        if self.downsample is not None:
            identity = self.downsample(x)
        out += identity
        out = self.relu(out)
    else:
        if self.downsample is not None:
            out = self.relu(self.downsample(identity))
        else:
            out = identity
    return out