{"version":3,"sources":["jsdelivr-header.js","/npm/aneron@1.0.1/script.js"],"names":[],"mappings":"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","file":"/npm/aneron@1.0.1/script.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/aneron@1.0.1/script.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","let Array2d = {\n    newData : function(rows,cols){\n        let data = []\n        for(let i = 0;i < rows;i++){\n            data[i] = []\n            for(let j = 0;j < cols;j++){\n                data[i][j] = Math.random()\n            }\n        }\n        return data\n    },\n    array:function(arr){\n        let data = []\n        for(let i = 0;i < arr.length;i++){\n            data[i] = [arr[i]]\n        }\n        return data\n    },\n    add:function(a,b){\n        for(let i = 0;i<a.length;i++){\n            for(let j = 0;j < a[i].length;j++){\n                a[i][j] += b[i][j]\n            }\n        }\n        return a\n    },\n    subtract:function(a,b){\n        let result = Array2d.newData(a.length,b[0].length)\n        for(let i = 0;i < result.length;i++){\n            for(let j = 0;j< result[i].length;j++){\n                result[i][j] = a[i][j] - b[i][j]\n            }\n        }\n        return result\n    },\n    multiplyArray2d: function(a,b){\n        let result = Array2d.newData(a.length, b[0].length)\n        for(let i = 0;i < result.length;i++){\n            for(let j = 0;j < result[i].length;j++){\n                let sum = 0\n                for(let k = 0; k < a[0].length;k++){\n                    sum += a[i][k] * b[k][j]\n                }\n                result[i][j] = sum\n            }\n        }\n        return result\n    },\n    map:function(a,cb){\n        let arr = []\n        for(let i = 0; i < a.length;i++){\n            arr[i] = []\n            for(let j = 0;j < a[i].length;j++){\n                let val = a[i][j]\n                arr[i][j] = cb(val,i,j)\n            }\n        }\n        return arr\n    },\n    transpose:function(m){\n        let arr = Array2d.newData(m[0].length,m.length)\n        for(let i = 0;i < m.length;i++){\n            for(let j = 0;j < m[i].length;j++){\n                arr[j][i] = m[i][j]\n            }\n        }\n        return arr\n    },\n    multiply:function(a,n){\n        let arr = a\n        if(typeof n == \"object\"){\n            for(let i = 0; i < arr.length;i++){\n                for(let j = 0; j < arr[i].length;j++){\n                    arr[i][j] *= n[i][j]\n                }\n            }\n        }else{\n            for(let i = 0; i < arr.length;i++){\n                for(let j = 0; j < arr[i].length;j++){\n                    arr[i][j] *= n\n                }\n            }\n        }\n        return arr \n    }\n}\n\nclass Ane{\n    neuronData = []\n\n    static ac = {\n        sigmoid: {\n            activation:function(x){return 1 / (1 + Math.exp(-x))},\n            derivatives: function(y){return y * (1 - y)}\n        },\n        tanh: {\n            activation: function(x){return (2/ (1 + Math.exp(-2*x))) - 1},\n            derivatives: function(y){return 1 - (y * y)}\n        },\n        // linier:{\n        //     derivatives: function(x){return 1},\n        //     activation:function(x){return x}\n        // },\n        // relu:{\n        //     derivatives:function(y){\n        //         let result\n        //         y > 0? result = 1: result = 0\n        //         return result\n        //     },\n        //     activation:function(x){return Math.max(0,x)}\n        // }\n        softsign:{\n            activation:function(x){return x / (1 + Math.abs(x))},\n            derivatives:function(y){return 1 / ((1 + Math.abs(y))*(1 + Math.abs(y)))}\n        },\n        // sinusoid:{\n        //     activation:function(x){return Math.sin(x)},\n        //     derivatives:function(y){return Math.cos(y)}\n        // },\n        // gaussian:{\n        //     activation:function(x){return Math.exp(-x*-x)},\n        //     derivatives:function(y){return -2*y*Math.exp(-y*-y)}\n        // }\n    }\n\n    constructor(...parameter){\n        for(let i = 0;i < parameter.length - 1;i++){\n            let weight = Array2d.newData(parameter[i+1][0],parameter[i][0])\n            let bias = Array2d.newData(parameter[i+1][0],1)\n            let activation = parameter[i+1][1] || Ane.ac.sigmoid\n            this.neuronData.push({weight,bias,activation})\n        }\n        this.learning_rate = 0.1\n    }\n    predict(input){\n        let arr = Array2d.array(input)\n        let layers = []\n        layers.push(arr)\n\n        //feed forward\n        for(let i = 0;i < this.neuronData.length;i++){\n            let newData = Array2d.multiplyArray2d(this.neuronData[i].weight,arr)\n            newData = Array2d.add(newData,this.neuronData[i].bias)\n            newData = Array2d.map(newData,this.neuronData[i].activation.activation)\n            layers.push(newData)\n            arr = newData\n        }\n        \n        return Array2d.transpose(layers[layers.length - 1])[0]\n    }\n\n    mutate(rate){\n        function mutate(val){\n            if(Math.random() < rate){\n                return Math.random()\n            }else{\n                return val\n            }\n        }\n\n        for(let i of this.neuronData){\n            i.weight = Array2d.map(i.weight,mutate)\n            i.bias = Array2d.map(i.bias,mutate)\n        }\n        \n    }\n\n    fit(xs,ys,e){\n        if(xs.length != ys.length){\n            return console.error(\"amount of input and target isn't same\")\n        }\n\n        for(let eph = 0; eph < e.epochs;eph++){\n            for(let x = 0;x < xs.length;x++){\n                let input = Array2d.array(xs[x])\n                let layers = []\n                let lastOutput = input\n                layers.push(lastOutput)\n                for(let i = 0;i < this.neuronData.length;i++){\n                    let newData = Array2d.multiplyArray2d(this.neuronData[i].weight,lastOutput)\n                    newData = Array2d.add(newData,this.neuronData[i].bias)\n                    newData = Array2d.map(newData,this.neuronData[i].activation.activation)\n                    layers.push(newData)\n                    lastOutput = newData\n                }\n\n                let targets = Array2d.array(ys[x])\n                let loss = Array2d.subtract(targets,lastOutput)\n                \n                let optimizer\n                \n                // backpropagation\n                for(let b = this.neuronData.length - 1; b >= 0;--b){\n                    optimizer = Array2d.map(lastOutput,this.neuronData[b].activation.derivatives)\n                    optimizer = Array2d.multiply(optimizer,loss)\n                    optimizer = Array2d.multiply(optimizer,this.learning_rate)\n\n                    //calculate deltas\n                    let layer_T = Array2d.transpose(layers[b])\n                    let w_layer_deltas = Array2d.multiplyArray2d(optimizer,layer_T)\n                    \n                    this.neuronData[b].weight = Array2d.add(this.neuronData[b].weight,w_layer_deltas)\n                    this.neuronData[b].bias = Array2d.add(this.neuronData[b].bias,optimizer)\n                    \n                    //calculate error of layer\n                    let weight_T = Array2d.transpose(this.neuronData[b].weight)\n                    let layer_error = Array2d.multiplyArray2d(weight_T,loss)\n\n                    lastOutput = layers[b]\n                    loss = layer_error\n                }\n            }\n        }\n    }\n}\n\n\nmodule.exports = Ane\n"]}