UNPKG

skipjacks

Version:

Client-Side JavaScript AI or Neural Net with CSide requests, training and output

2 lines 1.8 kB
/*! skipjacks 2023-10-30 */ const{NeuralNet,Layer,SubLayer}=require("./index");var asciichart=require("asciichart");const arc_activationFunction="1/(Math.sqrt(1 + Math.exp(-x)**2))",arc_derivativeFunction="Math.sqrt(100+(this.activation_function(x) * (1 - this.activation_function(x))) ** 2) - 10",activationFunction="1 / (1 + Math.exp(-x))",derivativeFunction="this.activation_function(x) * (1 - this.activation_function(x))",sublayers1=[new SubLayer(2,activationFunction,derivativeFunction,2),new SubLayer(3,activationFunction,derivativeFunction,2),new SubLayer(1,activationFunction,derivativeFunction,2)],sublayers2=[new SubLayer(4,activationFunction,derivativeFunction,6),new SubLayer(2,activationFunction,derivativeFunction,6)],sublayers3=[new SubLayer(1,activationFunction,derivativeFunction,6)],layers=[new Layer(sublayers1),new Layer(sublayers2),new Layer(sublayers3)],testlayers=[new Layer([new SubLayer(1,activationFunction,derivativeFunction,2)])],learning_rate=.2,bias=Math.random(),oldNN=new skipjacksNN(layers,learning_rate,bias);test("Neural network improves accuracy over time",()=>{var t=new NeuralNet([new Layer(2,16,arc_activationFunction,arc_derivativeFunction),new Layer(16,16,arc_activationFunction,arc_derivativeFunction),new Layer(16,16,arc_activationFunction,arc_derivativeFunction),new Layer(16,16,arc_activationFunction,arc_derivativeFunction),new Layer(1,16,arc_activationFunction,arc_derivativeFunction)],.01,.5),i=[[3,1.5],[2,1],[4,1.5],[3,4],[3.5,.5],[2,.5],[5.5,1],[1,1]],n=[0,1,0,1,0,1,1,0],e=[],r=[];for(let a=0;a<100;a++)for(let a=0;a<n.length-2;a++)r.push(t.forwardPropagate(i[a])),e.push(t.calculateError(i[a],n[a])),t.backpropagate(i[a],n[a]);for(let a=n.length-2;a<n.length;a++)r.push(t.forwardPropagate(i[a])),e.push(t.calculateError(i[a],n[a]));console.log(e)});