def create_privacy_engine()

in utils/optimizer.py [0:0]


def create_privacy_engine(model, params, n_data):
    if params.private:
        if params.noise_multiplier is None:
            _n_data = n_data# if params.privacy_fake_samples is None else params.privacy_fake_samples
            sample_rate = params.batch_size / _n_data
            steps = params.epochs * _n_data / params.batch_size
            params.noise_multiplier = getNoiseMultiplier(params.privacy_epsilon, params.privacy_delta, sample_rate, steps)

        if params.max_grad_norm == "mean":
            max_grad_norm = 1.0
        else:
            max_grad_norm = params.max_grad_norm

    else:
        max_grad_norm = float("inf")
        params.noise_multiplier = 0

    if params.private or params.log_gradients:
        if params.log_gradients and not params.private:
            logger.info("Creating privacy engine to compute per sample gradients and log them.")
        privacy_engine = PrivacyEngine(
            model,
            batch_size=params.batch_size,
            sample_size=n_data,
            alphas=PRIVACY_ALPHAS,
            noise_multiplier=params.noise_multiplier,
            max_grad_norm=max_grad_norm
        )
    else:
        privacy_engine = None

    return privacy_engine