Esempio n. 1
0
def _kl_gumbel_gumbel(dist1, dist2):
    scale_1d2 = dist1.scale / dist2.scale
    return exponential.log(dist2.scale) - exponential.log(dist1.scale) \
        + EULER * (scale_1d2 - 1.) \
        + exponential.exp((dist2.loc - dist1.loc) / dist2.scale
                          + lgamma.lgamma(scale_1d2 + 1.)) \
        - 1 + (dist1.loc - dist2.loc) / dist2.scale
Esempio n. 2
0
 def log_prob(self, x):
     if isinstance(x, chainer.Variable):
         x = x.data
     x = x.astype(self.lam.dtype)
     xp1 = (x + 1).astype(self.lam.dtype)
     x, xp1 = utils.force_array(x), utils.force_array(xp1)
     return x * exponential.log(self.lam) - lgamma.lgamma(xp1) - self.lam
Esempio n. 3
0
def _kl_gumbel_gumbel(dist1, dist2):
    scale_1d2 = dist1.scale / dist2.scale
    return dist2._log_scale - dist1._log_scale \
        + EULER * (scale_1d2 - 1.) \
        + exponential.exp((dist2.loc - dist1.loc) / dist2.scale
                          + lgamma.lgamma(scale_1d2 + 1.)) \
        - 1 + (dist1.loc - dist2.loc) / dist2.scale
Esempio n. 4
0
 def log_prob(self, x):
     if isinstance(x, chainer.Variable):
         x = x.data
     x = x.astype(self.lam.dtype)
     xp1 = (x + 1).astype(self.lam.dtype)
     x, xp1 = utils.force_array(x), utils.force_array(xp1)
     return x * exponential.log(self.lam) - lgamma.lgamma(xp1) - self.lam
Esempio n. 5
0
 def log_prob(self, x):
     logp = - lgamma.lgamma(self.k) - self.k * exponential.log(self.theta) \
         + (self.k - 1) * exponential.log(x) - x / self.theta
     xp = logp.xp
     inf = xp.full_like(logp.array, xp.inf)
     if isinstance(x, chainer.Variable):
         x = x.array
     return where.where(xp.asarray(x >= 0), logp, xp.asarray(-inf))
Esempio n. 6
0
File: gamma.py Progetto: hvy/chainer
 def log_prob(self, x):
     logp = - lgamma.lgamma(self.k) - self.k * exponential.log(self.theta) \
         + (self.k - 1) * exponential.log(x) - x / self.theta
     xp = logp.xp
     inf = xp.full_like(logp.array, xp.inf)
     if isinstance(x, chainer.Variable):
         x = x.array
     return where.where(xp.asarray(x >= 0), logp, xp.asarray(-inf))
Esempio n. 7
0
def _kl_gamma_gamma(dist1, dist2):
    return (dist1.k - dist2.k) * digamma.digamma(dist1.k) \
        - (lgamma.lgamma(dist1.k) - lgamma.lgamma(dist2.k)) \
        + dist2.k\
        * (exponential.log(dist2.theta) - exponential.log(dist1.theta)) \
        + dist1.k * (dist1.theta / dist2.theta - 1)
Esempio n. 8
0
 def entropy(self):
     return (
         self._half_k
         + numpy.log(2.)
         + lgamma.lgamma(self._half_k)
         + (1 - self._half_k) * digamma.digamma(self._half_k))
Esempio n. 9
0
def _lbeta(x):
    return sum_mod.sum(lgamma.lgamma(x), axis=-1) \
        - lgamma.lgamma(sum_mod.sum(x, axis=-1))
Esempio n. 10
0
def _kl_gumbel_gumbel(dist1, dist2):
    scale_1d2 = dist1.scale / dist2.scale
    return (dist2._log_scale - dist1._log_scale + EULER * (scale_1d2 - 1.) +
            exponential.exp((dist2.loc - dist1.loc) / dist2.scale +
                            lgamma.lgamma(scale_1d2 + 1.)) - 1 +
            (dist1.loc - dist2.loc) / dist2.scale)
Esempio n. 11
0
 def log_prob(self, x):
     return (
         - lgamma.lgamma(self._half_k)
         - self._half_k * numpy.log(2.)
         + (self._half_k - 1) * exponential.log(x)
         - 0.5 * x)
Esempio n. 12
0
def _lbeta(a, b):
    return lgamma.lgamma(a) + lgamma.lgamma(b) - lgamma.lgamma(a + b)
Esempio n. 13
0
File: gamma.py Progetto: hvy/chainer
def _kl_gamma_gamma(dist1, dist2):
    return (dist1.k - dist2.k) * digamma.digamma(dist1.k) \
        - (lgamma.lgamma(dist1.k) - lgamma.lgamma(dist2.k)) \
        + dist2.k\
        * (exponential.log(dist2.theta) - exponential.log(dist1.theta)) \
        + dist1.k * (dist1.theta / dist2.theta - 1)
Esempio n. 14
0
File: gamma.py Progetto: hvy/chainer
 def entropy(self):
     return self.k + exponential.log(self.theta) + lgamma.lgamma(self.k) \
         + (1 - self.k) * digamma.digamma(self.k)
Esempio n. 15
0
def _lbeta(x):
    return sum_mod.sum(lgamma.lgamma(x), axis=-1) \
        - lgamma.lgamma(sum_mod.sum(x, axis=-1))
Esempio n. 16
0
 def log_prob(self, x):
     return - lgamma.lgamma(0.5 * self.k) - 0.5 * self.k * numpy.log(2.) \
         + (0.5 * self.k - 1) * exponential.log(x) - 0.5 * x
Esempio n. 17
0
 def entropy(self):
     return self.k + exponential.log(self.theta) + lgamma.lgamma(self.k) \
         + (1 - self.k) * digamma.digamma(self.k)
Esempio n. 18
0
 def log_prob(self, x):
     return - lgamma.lgamma(0.5 * self.k) - 0.5 * self.k * numpy.log(2.) \
         + (0.5 * self.k - 1) * exponential.log(x) - 0.5 * x
Esempio n. 19
0
 def entropy(self):
     return 0.5 * self.k + numpy.log(2.) + lgamma.lgamma(0.5 * self.k) \
         + (1 - 0.5 * self.k) * digamma.digamma(0.5 * self.k)
Esempio n. 20
0
 def log_prob(self, x):
     return - lgamma.lgamma(self._half_k) - self._half_k * numpy.log(2.) \
         + (self._half_k - 1) * exponential.log(x) - 0.5 * x
Esempio n. 21
0
 def entropy(self):
     return self._half_k + numpy.log(2.) + lgamma.lgamma(self._half_k) \
         + (1 - self._half_k) * digamma.digamma(self._half_k)
Esempio n. 22
0
def _lbeta(a, b):
    return lgamma.lgamma(a) + lgamma.lgamma(b) - lgamma.lgamma(a + b)
Esempio n. 23
0
 def entropy(self):
     return 0.5 * self.k + numpy.log(2.) + lgamma.lgamma(0.5 * self.k) \
         + (1 - 0.5 * self.k) * digamma.digamma(0.5 * self.k)