Exemplo n.º 1
0
 float eval(
         const Shared &,
         const Value & value,
         rng_t &) const {
     float beta = post_beta + value;
     return score + fast_lgamma(beta) - fast_lgamma(alpha + beta);
 }
Exemplo n.º 2
0
 float score_value_group(
         const Shared &,
         const std::vector<Group> &,
         size_t groupid,
         const Value & value,
         rng_t &) const {
     float beta = post_beta_[groupid] + value;
     return score_[groupid] + fast_lgamma(beta)
                            - fast_lgamma(beta + alpha_[groupid]);
 }
Exemplo n.º 3
0
 float score_data(
         const Shared & shared,
         rng_t &) const {
     Shared post = shared.plus_group(*this);
     float score = fast_lgamma(post.alpha) - fast_lgamma(shared.alpha);
     score += shared.alpha * fast_log(shared.inv_beta)
            - post.alpha * fast_log(post.inv_beta);
     score += -log_prod;
     return score;
 }
Exemplo n.º 4
0
 void score_value(
         const Shared &,
         const std::vector<Group> &,
         const Value & value,
         AlignedFloats scores_accum,
         rng_t &) const {
     for (size_t i = 0, size = scores_accum.size(); i < size; ++i) {
         float beta = post_beta_[i] + value;
         scores_accum[i] += score_[i] + fast_lgamma(beta)
                                      - fast_lgamma(beta + alpha_[i]);
     }
 }
Exemplo n.º 5
0
 void init(
         const Shared & shared,
         const Group & group,
         rng_t &) {
     Shared post = shared.plus_group(group);
     post_beta = post.beta;
     alpha = post.alpha + shared.r;
     score = fast_lgamma(post.alpha + post.beta)
           - fast_lgamma(post.alpha)
           - fast_lgamma(post.beta)
           + fast_lgamma(alpha);
 }
Exemplo n.º 6
0
 float eval(
         const Shared &,
         const Value & value,
         rng_t &) const {
     return score
          + fast_lgamma(post_alpha + value)
          - fast_log_factorial(value)
          + score_coeff * value;
 }
Exemplo n.º 7
0
    float score_data(
            const Shared & shared,
            const std::vector<Group> & groups,
            rng_t &) const {
        const float alpha_part = fast_lgamma(shared.alpha);
        const float beta_part = shared.alpha * fast_log(shared.inv_beta);

        float score = 0;
        for (auto const & group : groups) {
            if (group.count) {
                Shared post = shared.plus_group(group);
                score += fast_lgamma(post.alpha) - alpha_part;
                score += beta_part - post.alpha * fast_log(post.inv_beta);
                score += -group.log_prod;
            }
        }

        return score;
    }
Exemplo n.º 8
0
 void init(
         const Shared & shared,
         const Group & group,
         rng_t &) {
     Shared post = shared.plus_group(group);
     score_coeff = -fast_log(1.f + post.inv_beta);
     score = -fast_lgamma(post.alpha)
                  + post.alpha * (fast_log(post.inv_beta) + score_coeff);
     post_alpha = post.alpha;
 }
Exemplo n.º 9
0
 float score_value_group(
         const Shared &,
         const std::vector<Group> &,
         size_t groupid,
         const Value & value,
         rng_t &) const {
     return score_[groupid]
         + fast_lgamma(post_alpha_[groupid] + value)
         - fast_log_factorial(value)
         + score_coeff_[groupid] * value;
 }
Exemplo n.º 10
0
 float score_data(
         const Shared & shared,
         rng_t &) const {
     Shared post = shared.plus_group(*this);
     float score = fast_lgamma(shared.alpha + shared.beta)
                 - fast_lgamma(post.alpha + post.beta);
     score += fast_lgamma(post.alpha) - fast_lgamma(shared.alpha);
     score += fast_lgamma(post.beta) - fast_lgamma(shared.beta);
     return score;
 }
Exemplo n.º 11
0
 float score_value(
         const Shared & shared,
         const Value & value,
         rng_t &) const {
     Shared post = shared.plus_group(*this);
     float alpha = post.alpha + shared.r;
     float beta = post.beta + value;
     float score = fast_lgamma(post.alpha + post.beta)
                 - fast_lgamma(alpha + beta);
     score += fast_lgamma(alpha) - fast_lgamma(post.alpha);
     score += fast_lgamma(beta) - fast_lgamma(post.beta);
     return score;
 }
Exemplo n.º 12
0
 float score_data(
         const Shared & shared,
         const std::vector<Group> & groups,
         rng_t &) const {
     const float shared_part = fast_lgamma(shared.alpha + shared.beta)
                             - fast_lgamma(shared.alpha)
                             - fast_lgamma(shared.beta);
     float score = 0;
     for (auto const & group : groups) {
         if (group.count) {
             Shared post = shared.plus_group(group);
             score += fast_lgamma(post.alpha)
                    + fast_lgamma(post.beta)
                    - fast_lgamma(post.alpha + post.beta);
             score += shared_part;
         }
     }
     return score;
 }