The Gaussian proceeds normally. The Laplace breaks down with the following error:
File "AUTODPHOME/gmvslm.py", line 25, in <module>
eps_lm_afa = composed_lm_afa.get_approxDP(delta)
File "AUTODPHOME/autodp/autodp_core.py", line 113, in get_approxDP
return self.approxDP(delta)
File "AUTODPHOME/autodp/converter.py", line 1118, in min_f1_f2
return np.minimum(f1(x), f2(x))
File "AUTODPHOME/autodp/converter.py", line 824, in approxdp
t = exp_eps(1 - delta)
File "AUTODPHOME/autodp/converter.py", line 1080, in inv_f
results = minimize_scalar(normal_equation, bounds=bounds, bracket=[1,2], tol=tol)
File "AUTODPHOME/venv/lib/python3.8/site-packages/scipy/optimize/_minimize.py", line 879, in minimize_scalar
return _minimize_scalar_brent(fun, bracket, args, **options)
File "AUTODPHOME/venv/lib/python3.8/site-packages/scipy/optimize/_optimize.py", line 2511, in _minimize_scalar_brent
brent.optimize()
File "AUTODPHOME/venv/lib/python3.8/site-packages/scipy/optimize/_optimize.py", line 2281, in optimize
xa, xb, xc, fa, fb, fc, funcalls = self.get_bracket_info()
File "AUTODPHOME/venv/lib/python3.8/site-packages/scipy/optimize/_optimize.py", line 2257, in get_bracket_info
xa, xb, xc, fa, fb, fc, funcalls = bracket(func, xa=brack[0],
File "AUTODPHOME/venv/lib/python3.8/site-packages/scipy/optimize/_optimize.py", line 2765, in bracket
fa = func(*(xa,) + args)
File "AUTODPHOME/autodp/converter.py", line 1077, in normal_equation
return abs(fun(x))
File "AUTODPHOME/autodp/converter.py", line 1073, in fun
return f(x) - y
File "AUTODPHOME/autodp/converter.py", line 818, in trade_off
result = cdf_p(log_e) + x*cdf_q(-log_e)
File "AUTODPHOME/autodp/autodp_core.py", line 324, in <lambda>
cdf_p2q = lambda x: converter.phi_to_cdf(log_phi_p2q, x, n_quad = n_quad)
File "AUTODPHOME/autodp/converter.py", line 924, in phi_to_cdf
res = integrate.fixed_quad(inte_f, -1.0, 1.0, n =n_quad)
File "AUTODPHOME/venv/lib/python3.8/site-packages/scipy/integrate/_quadrature.py", line 151, in fixed_quad
return (b-a)/2.0 * np.sum(w*func(y, *args), axis=-1), None
File "AUTODPHOME/autodp/converter.py", line 923, in <lambda>
inte_f = lambda t: qua(t) * (1 + t ** 2) / ((1 - t ** 2) ** 2)
File "AUTODPHOME/autodp/converter.py", line 919, in qua
phi_result = [log_phi(x) for x in new_t]
File "AUTODPHOME/autodp/converter.py", line 919, in <listcomp>
phi_result = [log_phi(x) for x in new_t]
File "AUTODPHOME/autodp/transformer_zoo.py", line 111, in new_log_phi_p2q
return sum([c * mech.log_phi_p2q(x) for (mech, c) in zip(mechanism_list, coeff_list)])
File "AUTODPHOME/autodp/transformer_zoo.py", line 111, in <listcomp>
return sum([c * mech.log_phi_p2q(x) for (mech, c) in zip(mechanism_list, coeff_list)])
TypeError: unsupported operand type(s) for *: 'int' and 'NoneType'
Following the tutorial here, I tried to compute optimal accounting of composition of subsampled Gaussian and Laplace Mechanisms:
The Gaussian proceeds normally. The Laplace breaks down with the following error: