Source code for lighttuner.hpo.utils.math.normal

import math

from scipy.special import erfinv

v_2_m1 = math.sqrt(2)


[docs]def l2normal(x, mu=0.0, sigma=1.0): """ Overview: Turn one :math:`\\left[0, 1\\right]` linear value to normal distribution value, follows ``N(mu, sigma)``. :param x: Original linear value. :param mu: Mu value. :param sigma: Sigma value. :return: A normal distribution value. Examples:: - Simple usage >>> from lighttuner.hpo.utils.math import l2normal >>> l2normal(0.0) -inf >>> l2normal(0.2) -0.8416212335729143 >>> l2normal(0.5) 0.0 >>> l2normal(0.8) 0.8416212335729143 >>> l2normal(1.0) inf >>> l2normal(-0.1) nan >>> l2normal(1.1) nan - Use given ``mu`` and ``sigma`` >>> l2normal(0.2, 2, 8) -4.732969868583314 >>> l2normal(0.5, 10, 4) 10.0 >>> l2normal(0.8, -3, 6) 2.0497274014374858 """ return mu + sigma * v_2_m1 * erfinv(2 * x - 1)