crypten/gradients.py [516:528]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        if inplace:
            result = input.mul_(boolean_mask.div(1.0 - p))
        else:
            result = input.mul(boolean_mask.div(1.0 - p))
        ctx.save_multiple_for_backward([boolean_mask, p])
        return result

    @staticmethod
    def backward(ctx, grad_output):
        if len(ctx.saved_tensors) == 0:
            return grad_output  # forward pass was run in eval mode
        boolean_mask, p = ctx.saved_tensors
        return grad_output.mul(boolean_mask.div(1.0 - p))
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



crypten/gradients.py [556:568]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        if inplace:
            result = input.mul_(boolean_mask.div(1.0 - p))
        else:
            result = input.mul(boolean_mask.div(1.0 - p))
        ctx.save_multiple_for_backward([boolean_mask, p])
        return result

    @staticmethod
    def backward(ctx, grad_output):
        if len(ctx.saved_tensors) == 0:
            return grad_output  # forward pass was run in eval mode
        boolean_mask, p = ctx.saved_tensors
        return grad_output.mul(boolean_mask.div(1.0 - p))
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



