UNPKG

neuralnetworkjs

Version:
1 lines 6.16 kB
var NeuralNetwork=function(e){var t={};function n(s){if(t[s])return t[s].exports;var u=t[s]={i:s,l:!1,exports:{}};return e[s].call(u.exports,u,u.exports,n),u.l=!0,u.exports}return n.m=e,n.c=t,n.d=function(e,t,s){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(n.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var u in e)n.d(s,u,function(t){return e[t]}.bind(null,u));return s},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=2)}([function(e,t){e.exports=class{constructor(e){this.neurons=[],this.numberOfNeurons=e,this.initialize()}getNeuron(e){return this.neurons[e]}initialize(){}}},function(e,t,n){const s=n(5);e.exports=class{constructor(e){this.value=e,this.inputSynapses=[],this.outputSynapses=[],this.innerActivation=0,this.errorValue=0,this.desiredValue=0,this.deltaValue=0}setValue(e){this.value=e}setInputSynapses(e){this.inputSynapses=e}setOutputSynapses(e){this.outputSynapses=e}addOutputSynapse(e,t){let n=this.outputSynapses.length;this.outputSynapses.push(new s(n,e,t)),e.addInputSynapse(n,this,t)}addInputSynapse(e,t,n){this.inputSynapses.push(new s(e,t,n))}}},function(e,t,n){const s=n(3),u=n(6),i=n(8);e.exports=class{constructor(e,t,n){this._nInputNeurons=e,this._nHiddenNeurons=t,this._nOutputNeurons=n,this.setUp(this._nInputNeurons,this._nHiddenNeurons,this._nOutputNeurons)}setUp(e,t,n){this.inputLayer=new s(e),this.hiddenLayer=new u(t),this.outputLayer=new i(n),this.inputLayer.setUp(this.hiddenLayer),this.hiddenLayer.setUp(this.outputLayer)}getInputLayer(){return this.inputLayer}getHiddenLayer(){return this.hiddenLayer}getOutputLayer(){return this.outputLayer}}},function(e,t,n){const s=n(0),u=n(4);e.exports=class extends s{initialize(){for(let e=0;e<this.numberOfNeurons;e++)this.neurons.push(new u(0));this.neurons.push(new u(0))}setUp(e){for(let t=0;t<this.numberOfNeurons+1;t++)for(let n=0;n<e.numberOfNeurons;n++)t==this.numberOfNeurons?this.neurons[this.numberOfNeurons].addOutputSynapse(e.getNeuron(n),1):this.neurons[t].addOutputSynapse(e.getNeuron(n),2*Math.random()-1)}}},function(e,t,n){const s=n(1);e.exports=class extends s{}},function(e,t){e.exports=class{constructor(e,t,n){this.id=e,this.neuron=t,this.weight=n}}},function(e,t,n){const s=n(0),u=n(7);e.exports=class extends s{initialize(){for(let e=0;e<this.numberOfNeurons;e++)this.neurons.push(new u(0));this.neurons.push(new u(1))}activate(){for(let e=0;e<this.numberOfNeurons;e++)this.neurons[e].activate()}setUp(e){for(let t=0;t<this.numberOfNeurons+1;t++)for(let n=0;n<e.numberOfNeurons;n++)t==this.numberOfNeurons?this.neurons[t].addOutputSynapse(e.getNeuron(n),1):this.neurons[t].addOutputSynapse(e.getNeuron(n),2*Math.random()-1)}checkError(){for(let e=0;e<this.numberOfNeurons;e++)this.neurons[e].checkError()}changeWeight(e){let t=this;for(let n=0;n<this.numberOfNeurons;n++){for(let s=0;s<this.neurons[n].inputSynapses.length-1;s++)this.neurons[n].inputSynapses[s].weight+=e*this.neurons[n].deltaValue*this.neurons[n].inputSynapses[s].neuron.value,this.neurons[n].inputSynapses[s].neuron.outputSynapses.find(function(e){return e.id==t.neurons[n].inputSynapses[s].id}).weight=this.neurons[n].inputSynapses[s].weight;this.neurons[n].inputSynapses[this.neurons[n].inputSynapses.length-1].weight+=e*this.neurons[n].deltaValue,this.neurons[n].inputSynapses[this.neurons[n].inputSynapses.length-1].neuron.outputSynapses.find(function(e){return e.id==t.neurons[n].inputSynapses[t.neurons[n].inputSynapses.length-1].id}).weight=this.neurons[n].inputSynapses[this.neurons[n].inputSynapses.length-1].weight}}}},function(e,t,n){const s=n(1);e.exports=class extends s{activate(){let e=this.inputSynapses.slice(0,this.inputSynapses.length-1);e=e.map(function(e){return e.neuron.value*e.weight}),this.innerActivation=this.inputSynapses[this.inputSynapses.length-1].weight+e.reduce((e,t)=>e+t,0),this.setValue(1/(1+Math.exp(-this.innerActivation)))}checkError(){this.errorValue=0;for(let e=0;e<this.outputSynapses.length;e++)this.errorValue+=this.outputSynapses[e].neuron.deltaValue*this.outputSynapses[e].weight;this.deltaValue=this.errorValue*this.value*(1-this.value)}}},function(e,t,n){const s=n(0),u=n(9);e.exports=class extends s{initialize(){for(let e=0;e<this.numberOfNeurons;e++)this.neurons.push(new u(0))}activate(){for(let e=0;e<this.numberOfNeurons;e++)this.neurons[e].activate()}checkError(){for(let e=0;e<this.numberOfNeurons;e++)this.neurons[e].checkError()}changeWeight(e){let t=this;for(let n=0;n<this.numberOfNeurons;n++){for(let s=0;s<this.neurons[n].inputSynapses.length-1;s++)this.neurons[n].inputSynapses[s].weight+=e*this.neurons[n].deltaValue*this.neurons[n].inputSynapses[s].neuron.value,this.neurons[n].inputSynapses[s].neuron.outputSynapses.find(function(e){return e.id==t.neurons[n].inputSynapses[s].id}).weight=this.neurons[n].inputSynapses[s].weight;this.neurons[n].inputSynapses[this.neurons[n].inputSynapses.length-1].weight+=e*this.neurons[n].deltaValue,this.neurons[n].inputSynapses[this.neurons[n].inputSynapses.length-1].neuron.outputSynapses.find(function(e){return e.id==t.neurons[n].inputSynapses[t.neurons[n].inputSynapses.length-1].id}).weight=this.neurons[n].inputSynapses[this.neurons[n].inputSynapses.length-1].weight}}}},function(e,t,n){const s=n(1);e.exports=class extends s{activate(){let e=this.inputSynapses.slice(0,this.inputSynapses.length-1);e=e.map(function(e){return e.neuron.value*e.weight}),this.innerActivation=this.inputSynapses[this.inputSynapses.length-1].weight+e.reduce((e,t)=>e+t,0),this.setValue(1/(1+Math.exp(-this.innerActivation)))}checkError(){this.errorValue=this.desiredValue-this.value,this.deltaValue=this.errorValue*this.value*(1-this.value)}setDesiredValue(e){this.desiredValue=e}}}]);