Skip to content

Commit

Permalink
update test [ci skip]
Browse files Browse the repository at this point in the history
  • Loading branch information
kthohr committed May 28, 2018
1 parent 03e0f40 commit dca3987
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 55 deletions.
37 changes: 9 additions & 28 deletions README.md
Expand Up @@ -165,6 +165,7 @@ For a data-based example, consider maximum likelihood estimation of a logit mode

// sigmoid function

inline
arma::mat sigm(const arma::mat& X)
{
return 1.0 / (1.0 + arma::exp(-X));
Expand All @@ -178,33 +179,6 @@ struct ll_data_t
arma::mat X;
};

// log-likelihood function for Adam

double ll_fn(const arma::vec& vals_inp, arma::vec* grad_out, void* opt_data)
{
ll_data_t* objfn_data = reinterpret_cast<ll_data_t*>(opt_data);

arma::vec Y = objfn_data->Y;
arma::mat X = objfn_data->X;

arma::vec mu = sigm(X*vals_inp);

const double norm_term = static_cast<double>(Y.n_elem);

const double obj_val = - arma::accu( Y%arma::log(mu) + (1.0-Y)%arma::log(1.0-mu) ) / norm_term;

//

if (grad_out)
{
*grad_out = X.t() * (mu - Y) / norm_term;
}

//

return obj_val;
}

// log-likelihood function with hessian

double ll_fn_whess(const arma::vec& vals_inp, arma::vec* grad_out, arma::mat* hess_out, void* opt_data)
Expand Down Expand Up @@ -240,6 +214,13 @@ double ll_fn_whess(const arma::vec& vals_inp, arma::vec* grad_out, arma::mat* he
return obj_val;
}

// log-likelihood function for Adam

double ll_fn(const arma::vec& vals_inp, arma::vec* grad_out, void* opt_data)
{
return ll_fn_whess(vals_inp,grad_out,nullptr,opt_data);
}

//

int main()
Expand Down Expand Up @@ -272,7 +253,7 @@ int main()
optim::algo_settings_t settings;

settings.gd_method = 6;
settings.gd_settings.step_size = 0.1; // the 'learning rate'
settings.gd_settings.step_size = 0.1;

std::chrono::time_point<std::chrono::system_clock> start = std::chrono::system_clock::now();

Expand Down
35 changes: 8 additions & 27 deletions examples/logit_reg.cpp
Expand Up @@ -8,6 +8,7 @@

// sigmoid function

inline
arma::mat sigm(const arma::mat& X)
{
return 1.0 / (1.0 + arma::exp(-X));
Expand All @@ -21,33 +22,6 @@ struct ll_data_t
arma::mat X;
};

// log-likelihood function for Adam

double ll_fn(const arma::vec& vals_inp, arma::vec* grad_out, void* opt_data)
{
ll_data_t* objfn_data = reinterpret_cast<ll_data_t*>(opt_data);

arma::vec Y = objfn_data->Y;
arma::mat X = objfn_data->X;

arma::vec mu = sigm(X*vals_inp);

const double norm_term = static_cast<double>(Y.n_elem);

const double obj_val = - arma::accu( Y%arma::log(mu) + (1.0-Y)%arma::log(1.0-mu) ) / norm_term;

//

if (grad_out)
{
*grad_out = X.t() * (mu - Y) / norm_term;
}

//

return obj_val;
}

// log-likelihood function with hessian

double ll_fn_whess(const arma::vec& vals_inp, arma::vec* grad_out, arma::mat* hess_out, void* opt_data)
Expand Down Expand Up @@ -83,6 +57,13 @@ double ll_fn_whess(const arma::vec& vals_inp, arma::vec* grad_out, arma::mat* he
return obj_val;
}

// log-likelihood function for Adam

double ll_fn(const arma::vec& vals_inp, arma::vec* grad_out, void* opt_data)
{
return ll_fn_whess(vals_inp,grad_out,nullptr,opt_data);
}

//

int main()
Expand Down

0 comments on commit dca3987

Please sign in to comment.