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.
62 lines (59 loc) • 1.79 kB
JavaScript
const BasicRandomizer = require(PATHS.RANDOMIZERS + 'basic');
/**
* A randomizer that will create random weight and bias values that are between
* a specified range.
*
* @author jheaton
*
*/
class RangeRandomizer extends BasicRandomizer {
/**
* Construct a range randomizer.
*
* @param min {number}
* The minimum random value.
* @param max {number}
* The maximum random value.
*/
constructor(min, max) {
super();
this.min = min;
this.max = max;
}
/**
* Randomize the synapses and biases in the basic network based on an array,
* modify the array. Previous values may be used, or they may be discarded,
* depending on the randomizer.
*
* @param network {BasicNetwork} A network to randomize.
*/
randomize() {
if (arguments.length == 1) {
if (typeof arguments[0] == 'object' && arguments[0].constructor.name == 'BasicNetwork') {
const network = arguments[0];
for (let i = 0; i < network.getLayerCount() - 1; i++) {
this.randomizeNetworkLayer(network, i);
}
} else {
return this.nextDouble();
}
} else {
const min = arguments[0];
const max = arguments[1];
return this.nextDouble(min, max);
}
}
/**
* @param min {number} The minimum random value.
* @param max {number} The maximum random value.
*/
nextDouble(min, max) {
if (arguments.length === 0) {
min = this.min;
max = this.max;
}
const range = max - min;
return (range * Math.random()) + min;
}
}
module.exports = RangeRandomizer;