Пример #1
0
def _kl_beta_beta(dist1, dist2):
    dist1_apb = dist1.a + dist1.b
    dist2_apb = dist2.a + dist2.b
    return - _lbeta(dist1.a, dist1.b) + _lbeta(dist2.a, dist2.b)\
        + (dist1.a - dist2.a) * digamma.digamma(dist1.a) \
        + (dist1.b - dist2.b) * digamma.digamma(dist1.b) \
        + (dist2_apb - dist1_apb) * digamma.digamma(dist1_apb)
Пример #2
0
def _kl_beta_beta(dist1, dist2):
    dist1_apb = dist1._a_plus_b
    dist2_apb = dist2._a_plus_b
    return (-_lbeta(dist1.a, dist1.b) + _lbeta(dist2.a, dist2.b) +
            (dist1.a - dist2.a) * digamma.digamma(dist1.a) +
            (dist1.b - dist2.b) * digamma.digamma(dist1.b) +
            (dist2_apb - dist1_apb) * digamma.digamma(dist1_apb))
Пример #3
0
def _kl_beta_beta(dist1, dist2):
    dist1_apb = dist1.a + dist1.b
    dist2_apb = dist2.a + dist2.b
    return - _lbeta(dist1.a, dist1.b) + _lbeta(dist2.a, dist2.b)\
        + (dist1.a - dist2.a) * digamma.digamma(dist1.a) \
        + (dist1.b - dist2.b) * digamma.digamma(dist1.b) \
        + (dist2_apb - dist1_apb) * digamma.digamma(dist1_apb)
 def entropy(self):
     return (
         _lbeta(self.alpha)
         + ((self.alpha0 - self.event_shape[0])
            * digamma.digamma(self.alpha0))
         - sum_mod.sum(
             (self.alpha - 1) * digamma.digamma(self.alpha),
             axis=-1))
def _kl_dirichlet_dirichlet(dist1, dist2):
    return (
        - _lbeta(dist1.alpha)
        + _lbeta(dist2.alpha)
        + sum_mod.sum(
            (dist1.alpha - dist2.alpha)
            * (digamma.digamma(dist1.alpha)
               - expand_dims.expand_dims(
                   digamma.digamma(dist1.alpha0),
                   axis=-1)),
            axis=-1))
Пример #6
0
 def entropy(self):
     return _lbeta(self.alpha) \
         + (self.alpha0 - self.event_shape[0]) \
         * digamma.digamma(self.alpha0) \
         - sum_mod.sum((self.alpha - 1)
                       * digamma.digamma(self.alpha), axis=-1)
Пример #7
0
 def entropy(self):
     apb = self.a + self.b
     return _lbeta(self.a, self.b) \
         - (self.a - 1) * digamma.digamma(self.a) \
         - (self.b - 1) * digamma.digamma(self.b) \
         + (apb - 2) * digamma.digamma(apb)
Пример #8
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)
Пример #9
0
 def entropy(self):
     return self.k + exponential.log(self.theta) + lgamma.lgamma(self.k) \
         + (1 - self.k) * digamma.digamma(self.k)
Пример #10
0
 def entropy(self):
     apb = self.a + self.b
     return _lbeta(self.a, self.b) \
         - (self.a - 1) * digamma.digamma(self.a) \
         - (self.b - 1) * digamma.digamma(self.b) \
         + (apb - 2) * digamma.digamma(apb)
Пример #11
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)
Пример #12
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)
Пример #13
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))
Пример #14
0
 def entropy(self):
     apb = self._a_plus_b
     return (_lbeta(self.a, self.b) -
             (self.a - 1) * digamma.digamma(self.a) -
             (self.b - 1) * digamma.digamma(self.b) +
             (apb - 2) * digamma.digamma(apb))
Пример #15
0
 def entropy(self):
     return _lbeta(self.alpha) \
         + (self.alpha0 - self.event_shape[0]) \
         * digamma.digamma(self.alpha0) \
         - sum_mod.sum((self.alpha - 1)
                       * digamma.digamma(self.alpha), axis=-1)
Пример #16
0
def _kl_dirichlet_dirichlet(dist1, dist2):
    return - _lbeta(dist1.alpha) + _lbeta(dist2.alpha) \
        + sum_mod.sum((dist1.alpha - dist2.alpha) * (
            digamma.digamma(dist1.alpha)
            - expand_dims.expand_dims(digamma.digamma(
                dist1.alpha0), axis=-1)), axis=-1)
Пример #17
0
 def entropy(self):
     return self.k + exponential.log(self.theta) + lgamma.lgamma(self.k) \
         + (1 - self.k) * digamma.digamma(self.k)
Пример #18
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)
Пример #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)