Stan Math Library  2.8.0
reverse mode automatic differentiation
 All Classes Namespaces Files Functions Variables Typedefs Enumerator Friends Macros Groups
binary_log_loss.hpp
Go to the documentation of this file.
1 #ifndef STAN_MATH_REV_SCAL_FUN_BINARY_LOG_LOSS_HPP
2 #define STAN_MATH_REV_SCAL_FUN_BINARY_LOG_LOSS_HPP
3 
4 #include <stan/math/rev/core.hpp>
7 #include <valarray>
8 
9 namespace stan {
10  namespace math {
11 
12  namespace {
13  class binary_log_loss_1_vari : public op_v_vari {
14  public:
15  explicit binary_log_loss_1_vari(vari* avi) :
16  op_v_vari(-std::log(avi->val_), avi) {
17  }
18  void chain() {
19  avi_->adj_ -= adj_ / avi_->val_;
20  }
21  };
22 
23  class binary_log_loss_0_vari : public op_v_vari {
24  public:
25  explicit binary_log_loss_0_vari(vari* avi) :
26  op_v_vari(-stan::math::log1p(-avi->val_), avi) {
27  }
28  void chain() {
29  avi_->adj_ += adj_ / (1.0 - avi_->val_);
30  }
31  };
32  }
33 
68  inline var binary_log_loss(const int y, const stan::math::var& y_hat) {
69  if (y == 0)
70  return var(new binary_log_loss_0_vari(y_hat.vi_));
71  else
72  return var(new binary_log_loss_1_vari(y_hat.vi_));
73  }
74 
75  }
76 }
77 #endif
fvar< T > binary_log_loss(const int y, const fvar< T > &y_hat)
fvar< T > log(const fvar< T > &x)
Definition: log.hpp:15
Independent (input) and dependent (output) variables for gradients.
Definition: var.hpp:32
vari * vi_
Pointer to the implementation of this variable.
Definition: var.hpp:44
fvar< T > log1p(const fvar< T > &x)
Definition: log1p.hpp:16

     [ Stan Home Page ] © 2011–2015, Stan Development Team.