Skip to content

Instantly share code, notes, and snippets.

@ivmarkp
Created March 1, 2017 12:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ivmarkp/acd750b562878c5f0de739241b420321 to your computer and use it in GitHub Desktop.
Save ivmarkp/acd750b562878c5f0de739241b420321 to your computer and use it in GitHub Desktop.
// Initialise the parameters mem, g and g2.
arma::mat mem = arma::ones<arma::mat>(iterate.n_rows, iterate.n_cols);
arma::mat g = arma::zeros<arma::mat>(iterate.n_rows, iterate.n_cols);
arma::mat g2 = arma::zeros<arma::mat>(iterate.n_rows, iterate.n_cols);
// And update the iterate.
arma::mat r = 1 / (mem + 1);
g = (1 - r) % g;
g += r % gradient;
g2 = (1 - r) % g2;
g2 += r % (gradient % gradient);
double x = arma::as_scalar(g * (g / (g2 + eps)));
iterate -= gradient * std::min(x, lRate) / (arma::sqrt(g2) + eps);
mem *= (1 - x);
mem += 1;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment