encog
Version:
Encog is a NodeJs ES6 framework based on the Encog Machine Learning Framework by Jeff Heaton, plus some the of basic data manipulation helpers.
37 lines (31 loc) • 857 B
JavaScript
const UpdateRule = require('./updateRule');
const ArrayUtils = require(PATHS.PREPROCESSING + 'array');
class AdaGrad extends UpdateRule {
/**
* @inheritDoc
*/
init(theTraining) {
this.eps = 1e-8;
this.cache = [];
this.training = theTraining;
this.cache = ArrayUtils.newFloatArray(theTraining.getFlat().getWeights().length);
}
/**
* @inheritDoc
*/
update(gradients, weights) {
let delta;
for (let i = 0; i < weights.length; i++) {
this.cache[i] += gradients[i] * gradients[i];
delta = (this.training.getLearningRate() * gradients[i]) / (Math.sqrt(this.cache[i]) + this.eps);
weights[i] += delta;
}
}
getEps() {
return eps;
}
setEps(eps) {
this.eps = eps;
}
}
module.exports = AdaGrad;