UNPKG

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 (50 loc) 1.97 kB
const BasicLayer = require(PATHS.LAYERS + 'basic'); const BasicNetwork = require(PATHS.NETWORKS + 'basic'); const NeuralNetworkPattern = require(PATHS.PATTERNS + 'neuralNetwork'); const FreeformNetwork = require(PATHS.FREEFORM + 'network'); /** * Used to create feedforward neural networks. A feedforward network has an * input and output layers separated by zero or more hidden layers. The * feedforward neural network is one of the most common neural network patterns. * * @author jheaton * */ class FeedForwardPattern extends NeuralNetworkPattern { constructor() { super(); } /** * @inheritDoc */ generate() { const input = new BasicLayer(this.inputLayer.activationFunction, true, this.inputLayer.neurons); const network = new BasicNetwork(); network.addLayer(input); for (let hiddenLayer of this.hiddenLayers) { network.addLayer(new BasicLayer(hiddenLayer.activationFunction, true, hiddenLayer.neurons)); } const output = new BasicLayer(this.outputLayer.activationFunction, false, this.outputLayer.neurons); network.addLayer(output); network.randomize(); return network; } /** * @inheritDoc */ generateFreeformNetwork() { const network = new FreeformNetwork(); let lastLayer = network.createInputLayer(this.inputLayer.neurons); let currentLayer; for (let hiddenLayer of this.hiddenLayers) { currentLayer = network.createLayer(hiddenLayer.neurons); network.connectLayers(lastLayer, currentLayer, hiddenLayer.activationFunction, 1.0); lastLayer = currentLayer; } currentLayer = network.createOutputLayer(this.outputLayer.neurons); network.connectLayers(lastLayer, currentLayer, this.outputLayer.activationFunction, null); network.randomize(); return network; } } module.exports = FeedForwardPattern;