布尔感知器用于非运算

我试图为基本布尔表达式实现一个简单的感知器。但我无法正确地训练非运算感知器。

我成功地训练了感知器,使其在给定的输入集上返回正确的值。但当我尝试训练运算时,

这是我操作的方法:

感知器有两个输入、两个权重和一个偏置(偏置输入固定为1)。

所有感知器的权重初始值都为0。然后我生成随机值(介于0和1之间)来训练感知器,并保持循环直到得到10次正确的猜测。

它们的学习率为0.1

这是训练过程:

为了猜测值:
对于每个输入,我将输入乘以权重,然后将所有值相加,包括偏置。

sum = (weight1 * input1) + (weight2 * input2) + (biasWeight * biasInput)--偏置输入固定为1return = if (sum > 0) then 1 else 0

为了训练感知器:
我从感知器获取猜测值

val = and.guess(1,0) --这将返回0或1error = answer - val

对于每个输入,我执行以下计算

weight = weight + (input * error * rate)

然后我对偏置执行相同的操作

biasWeight = biasWeight + (input * error * rate)--偏置输入固定为1

通过这个过程,我可以成功地训练感知器。

/感知器之间的唯一区别是输入的数量(运算只有1个输入)

但非运算感知器的权重只是根据学习率的数值不断增加。

有时候,根据感知器的训练顺序,当它达到0.5时,会得到正确的值。

当我回家后发布代码时,我发现了错误。应该返回weight * inputCALC函数却返回了weight + input,而这实际上对的训练有效。

<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head>    <meta charset="utf-8" />    <title></title>    <script src="jquery-3.2.1.js"></script>    <script type="text/javascript">        function Show(text) {            if (!text) {                text = '';            }            document.writeln(text + '<br />');        }        //返回0到1之间的随机值        function getRandom() {            return Math.floor(Math.random() * 2);        };        function PerceptronData(input, weight) {            this.input = input;            this.weight = weight;        }        PerceptronData.prototype.calc = function () {            var result = this.input + this.weight;            return result;        };        PerceptronData.prototype.adjust = function (error, rate) {            this.weight += (this.input * error * rate);        };        PerceptronData.prototype.print = function () {            return '(' + this.input + ', ' + this.weight + ')';        }        function Perceptron(n) {            this.data = [];//数据数组 [input, weight]            this.bias = new PerceptronData(1, 0);            this.rate = 0.1;//学习率            //初始数据            for (var index = 0; index < n; index++) {                this.data.push(new PerceptronData(0, 0));            }        }        //在最终感知器中从"guess"函数调用        Perceptron.prototype.process = function (inputs) {            var data = this.data;            if (inputs.length != data.length) {                throw "输入的数量 [" + inputs.length + "] 与感知器的初始值 [" + data.length + "] 不匹配。";            }            var dataSum = 0;            for (var index = 0; index < data.length; index++) {                data[index].input = parseInt(inputs[index]);                dataSum += data[index].calc();            }            dataSum += this.bias.calc();            return dataSum;        };        //调整每个数据的权重        Perceptron.prototype.adjust = function (value, answer) {            var data = this.data;            var error = answer - value;            for (var index = 0; index < data.length; index++) {                data[index].adjust(error, this.rate);            }            this.bias.adjust(error, this.rate);        };        Perceptron.prototype.print = function () {            var data = this.data;            var result = '';            for (var index = 0; index < data.length; index++) {                result += 'data[' + index + ']' + data[index].print() + ' > ';            }            return result + 'bias' + this.bias.print();        };        function NotPerceptron() {            Perceptron.call(this, 1);        }        NotPerceptron.prototype = Object.create(Perceptron.prototype);        NotPerceptron.prototype.guess = function (value) {            var data = this.process([value]);            //激活函数            return ((data > 0) ? 1 : 0);        };        NotPerceptron.prototype.train = function (value, answer) {            var result = this.guess([value]);            this.adjust(result, answer);        };        function AndPerceptron() {            Perceptron.call(this, 2);        }        AndPerceptron.prototype = Object.create(Perceptron.prototype);        AndPerceptron.prototype.guess = function (valueA, valueB) {            var data = this.process([valueA, valueB]);            //激活函数            return ((data > 0) ? 1 : 0);        };        AndPerceptron.prototype.train = function (valueA, valueB, answer) {            var result = this.guess(valueA, valueB);            this.adjust(result, answer);        };        function OrPerceptron() {            Perceptron.call(this, 2);        }        OrPerceptron.prototype = Object.create(Perceptron.prototype);        OrPerceptron.prototype.guess = function (valueA, valueB) {            var data = this.process([valueA, valueB]);            //激活函数            return ((data > 0) ? 1 : 0);        };        OrPerceptron.prototype.train = function (valueA, valueB, answer) {            var result = this.guess(valueA, valueB);            this.adjust(result, answer);        };    </script></head><body>    <script type="text/javascript">        Show('训练与运算...');        Show();        var and = new AndPerceptron();        var count = 0;        var total = 0;        var max = 100;        while (count < 10 && total < max) {            total++;            var a = getRandom();            var b = getRandom();            var answer = ((a === 1 && b === 1) ? 1 : 0);            and.train(a, b, answer);            a = getRandom();            b = getRandom();            answer = ((a === 1 && b === 1) ? 1 : 0);            var guess = and.guess(a, b);            if (guess === answer) {                count++;            } else {                count = 0;            }            Show(' > 与运算(' + a + ', ' + b + ') = ' + guess + ' > [' + and.print() + ']');            if (count == 10) {                //最终测试                if (and.guess(0, 0) == 1) {                    count = 0;                }                if (and.guess(0, 1) == 1) {                    count = 0;                }                if (and.guess(1, 0) == 1) {                    count = 0;                }                if (and.guess(1, 1) == 0) {                    count = 0;                }            }        }        Show();        if (total >= max) {            Show('与运算训练失败...');        } else {            Show('与运算训练完成,共[' + total + ']次交互。[' + and.print() + ']');        }        Show();        Show('与运算(0, 0) = ' + and.guess(0, 0));        Show('与运算(0, 1) = ' + and.guess(0, 1));        Show('与运算(1, 0) = ' + and.guess(1, 0));        Show('与运算(1, 1) = ' + and.guess(1, 1));        Show();        Show('训练或运算...');        Show();        var or = new OrPerceptron();        count = 0;        total = 0;        max = 100;        while (count < 10 && total < max) {            total++;            var a = getRandom();            var b = getRandom();            var answer = ((a === 1 || b === 1) ? 1 : 0);            or.train(a, b, answer);            a = getRandom();            b = getRandom();            answer = ((a === 1 || b === 1) ? 1 : 0);            var guess = or.guess(a, b);            if (guess === answer) {                count++;            } else {                count = 0;            }            Show(' > 或运算(' + a + ', ' + b + ') = ' + guess + ' > [' + or.print() + ']');            if (count == 10) {                //最终测试                if (or.guess(0, 0) == 1) {                    count = 0;                }                if (or.guess(0, 1) == 0) {                    count = 0;                }                if (or.guess(1, 0) == 0) {                    count = 0;                }                if (or.guess(1, 1) == 0) {                    count = 0;                }            }        }        Show();        if (total >= max) {            Show('或运算训练失败...');        } else {            Show('或运算训练完成,共[' + total + ']次交互。[' + or.print() + ']');        }        Show();        Show('或运算(0, 0) = ' + or.guess(0, 0));        Show('或运算(0, 1) = ' + or.guess(0, 1));        Show('或运算(1, 0) = ' + or.guess(1, 0));        Show('或运算(1, 1) = ' + or.guess(1, 1));        Show();        Show('训练非运算...');        Show();        var not = new NotPerceptron();        not.rate = 0.1;        count = 0;        total = 0;        max = 100;        while (count < 10 && total < max) {            total++;            var test = getRandom();            var answer = ((test === 1) ? 0 : 1);            not.train(test, answer);            test = getRandom();            answer = ((test === 1) ? 0 : 1);            var guess = not.guess(test);            if (guess === answer) {                count++;            } else {                count = 0;            }            Show(' > 非运算(' + test + ') = ' + guess + ' > [' + not.print() + ']');            if (count == 10) {                //最终测试                if (not.guess(0) == 0) {                    count = 0;                }                if (not.guess(1) == 1) {                    count = 0;                }            }        }        Show();        if (total >= max) {            Show('非运算训练失败...');        } else {            Show('非运算训练完成,共[' + total + ']次交互。[' + not.print() + ']');        }        Show();        Show('非运算(1) = ' + not.guess(1));        Show('非运算(0) = ' + not.guess(0));    </script></body></html>

输出结果:

训练与运算...> 与运算(1, 0) = 1 > [data[0](1, 0.1) > data[1](0, 0.1) > bias(1, 0.1)]> 与运算(1, 1) = 1 > [data[0](1, 0.1) > data[1](1, 0) > bias(1, 0)]> 与运算(1, 0) = 1 > [data[0](1, 0.1) > data[1](0, 0) > bias(1, 0)]> 与运算(1, 1) = 1 > [data[0](1, 0.1) > data[1](1, 0) > bias(1, 0)]> 与运算(1, 0) = 1 > [data[0](1, 0.1) > data[1](0, 0) > bias(1, 0)]> 与运算(0, 1) = 0 > [data[0](0, 0.1) > data[1](1, 0) > bias(1, 0)]> 与运算(0, 1) = 0 > [data[0](0, 0) > data[1](1, 0) > bias(1, -0.1)]> 与运算(0, 1) = 1 > [data[0](0, 0.1) > data[1](1, 0.1) > bias(1, 0)]> 与运算(0, 1) = 0 > [data[0](0, 0.1) > data[1](1, 0) > bias(1, -0.1)]> 与运算(1, 1) = 0 > [data[0](1, 0.1) > data[1](1, 0) > bias(1, -0.1)]> 与运算(1, 1) = 0 > [data[0](1, 0.1) > data[1](1, 0) > bias(1, -0.1)]> 与运算(1, 0) = 0 > [data[0](1, 0.1) > data[1](0, 0) > bias(1, -0.1)]> 与运算(1, 1) = 1 > [data[0](1, 0.2) > data[1](1, 0.1) > bias(1, 0)]> 与运算(0, 0) = 0 > [data[0](0, 0.1) > data[1](0, 0.1) > bias(1, -0.1)]> 与运算(1, 0) = 0 > [data[0](1, 0.1) > data[1](0, 0.1) > bias(1, -0.1)]> 与运算(1, 0) = 0 > [data[0](1, 0.1) > data[1](0, 0.1) > bias(1, -0.1)]> 与运算(1, 0) = 0 > [data[0](1, 0.1) > data[1](0, 0.1) > bias(1, -0.1)]> 与运算(1, 0) = 0 > [data[0](1, 0.1) > data[1](0, 0.1) > bias(1, -0.1)]> 与运算(0, 0) = 0 > [data[0](0, 0.1) > data[1](0, 0.1) > bias(1, -0.1)]> 与运算(1, 0) = 0 > [data[0](1, 0.1) > data[1](0, 0.1) > bias(1, -0.1)]> 与运算(0, 0) = 0 > [data[0](0, 0.1) > data[1](0, 0.1) > bias(1, -0.1)]与运算训练完成,共[21]次交互。[data[0](1, 0.1) > data[1](1, 0.1) > bias(1, -0.1)]与运算(0, 0) = 0与运算(0, 1) = 0与运算(1, 0) = 0与运算(1, 1) = 1训练或运算...> 或运算(1, 0) = 1 > [data[0](1, 0.1) > data[1](0, 0.1) > bias(1, 0.1)]> 或运算(0, 1) = 1 > [data[0](0, 0.1) > data[1](1, 0.1) > bias(1, 0.1)]> 或运算(0, 1) = 1 > [data[0](0, 0.1) > data[1](1, 0.1) > bias(1, 0.1)]> 或运算(0, 0) = 1 > [data[0](0, 0.1) > data[1](0, 0.1) > bias(1, 0.1)]> 或运算(0, 0) = 1 > [data[0](0, 0.1) > data[1](0, 0.1) > bias(1, 0.1)]> 或运算(1, 0) = 1 > [data[0](1, 0.1) > data[1](0, 0.1) > bias(1, 0.1)]> 或运算(0, 1) = 1 > [data[0](0, 0.1) > data[1](1, 0.1) > bias(1, 0.1)]> 或运算(1, 0) = 1 > [data[0](1, 0.1) > data[1](0, 0.1) > bias(1, 0)]> 或运算(0, 0) = 0 > [data[0](0, 0.1) > data[1](0, 0.1) > bias(1, 0)]> 或运算(1, 0) = 1 > [data[0](1, 0.1) > data[1](0, 0.1) > bias(1, 0)]> 或运算(0, 0) = 0 > [data[0](0, 0.1) > data[1](0, 0.1) > bias(1, 0)]> 或运算(0, 0) = 0 > [data[0](0, 0.1) > data[1](0, 0.1) > bias(1, 0)]> 或运算(1, 1) = 1 > [data[0](1, 0.1) > data[1](1, 0.1) > bias(1, 0)]> 或运算(1, 0) = 1 > [data[0](1, 0.1) > data[1](0, 0.1) > bias(1, 0)]> 或运算(1, 0) = 1 > [data[0](1, 0.1) > data[1](0, 0.1) > bias(1, 0)]或运算训练完成,共[15]次交互。[data[0](1, 0.1) > data[1](1, 0.1) > bias(1, 0)]或运算(0, 0) = 0或运算(0, 1) = 1或运算(1, 0) = 1或运算(1, 1) = 1训练非运算...> 非运算(0) = 0 > [data[0](0, 0) > bias(1, 0)]> 非运算(1) = 1 > [data[0](1, 0) > bias(1, 0.1)]> 非运算(0) = 1 > [data[0](0, 0) > bias(1, 0.1)]> 非运算(1) = 1 > [data[0](1, 0) > bias(1, 0.1)]> 非运算(0) = 0 > [data[0](0, -0.1) > bias(1, 0)]> 非运算(1) = 1 > [data[0](1, -0.2) > bias(1, -0.1)]> 非运算(1) = 1 > [data[0](1, -0.2) > bias(1, -0.1)]> 非运算(0) = 1 > [data[0](0, -0.2) > bias(1, -0.1)]> 非运算(0) = 1 > [data[0](0, -0.30000000000000004) > bias(1, -0.2)]> 非运算(1) = 1 > [data[0](1, -0.30000000000000004) > bias(1, -0.2)]> 非运算(0) = 1 > [data[0](0, -0.30000000000000004) > bias(1, -0.2)]> 非运算(1) = 1 > [data[0](1, -0.4) > bias(1, -0.30000000000000004)]> 非运算(1) = 1 > [data[0](1, -0.5) > bias(1, -0.4)]> 非运算(1) = 1 > [data[0](1, -0.5) > bias(1, -0.4)]> 非运算(1) = 1 > [data[0](1, -0.6) > bias(1, -0.5)]> 非运算(1) = 1 > [data[0](1, -0.6) > bias(1, -0.5)]> 非运算(1) = 1 > [data[0](1, -0.7) > bias(1, -0.6)]> 非运算(1) = 1 > [data[0](1, -0.7999999999999999) > bias(1, -0.7)]> 非运算(0) = 1 > [data[0](0, -0.8999999999999999) > bias(1, -0.7999999999999999)]> 非运算(0) = 1 > [data[0](0, -0.8999999999999999) > bias(1, -0.7999999999999999)]> 非运算(0) = 1 > [data[0](0, -0.9999999999999999) > bias(1, -0.8999999999999999)]> 非运算(0) = 1 > [data[0](0, -0.9999999999999999) > bias(1, -0.8999999999999999)]> 非运算(1) = 1 > [data[0](1, -0.9999999999999999) > bias(1, -0.8999999999999999)]> 非运算(0) = 1 > [data[0](0, -0.9999999999999999) > bias(1, -0.8999999999999999)]> 非运算(0) = 1 > [data[0](0, -1.0999999999999999) > bias(1, -0.9999999999999999)]> 非运算(1) = 1 > [data[0](1, -1.2) > bias(1, -1.0999999999999999)]> 非运算(0) = 1 > [data[0](0, -1.2) > bias(1, -1.0999999999999999)]> 非运算(1) = 1 > [data[0](1, -1.2) > bias(1, -1.0999999999999999)]> 非运算(0) = 1 > [data[0](0, -1.2) > bias(1, -1.0999999999999999)]> 非运算(0) = 1 > [data[0](0, -1.2) > bias(1, -1.0999999999999999)]> 非运算(1) = 1 > [data[0](1, -1.2) > bias(1, -1.0999999999999999)]> 非运算(1) = 1 > [data[0](1, -1.3) > bias(1, -1.2)]> 非运算(0) = 1 > [data[0](0, -1.4000000000000001) > bias(1, -1.3)]> 非运算(0) = 1 > [data[0](0, -1.5000000000000002) > bias(1, -1.4000000000000001)]> 非运算(1) = 1 > [data[0](1, -1.6000000000000003) > bias(1, -1.5000000000000002)]> 非运算(1) = 1 > [data[0](1, -1.6000000000000003) > bias(1, -1.5000000000000002)]> 非运算(0) = 1 > [data[0](0, -1.6000000000000003) > bias(1, -1.5000000000000002)]> 非运算(0) = 1 > [data[0](0, -1.7000000000000004) > bias(1, -1.6000000000000003)]> 非运算(0) = 1 > [data[0](0, -1.8000000000000005) > bias(1, -1.7000000000000004)]> 非运算(1) = 1 > [data[0](1, -1.9000000000000006) > bias(1, -1.8000000000000005)]> 非运算(1) = 1 > [data[0](1, -1.9000000000000006) > bias(1, -1.8000000000000005)]> 非运算(1) = 1 > [data[0](1, -1.9000000000000006) > bias(1, -1.8000000000000005)]> 非运算(1) = 1 > [data[0](1, -1.9000000000000006) > bias(1, -1.8000000000000005)]> 非运算(0) = 1 > [data[0](0, -2.0000000000000004) > bias(1, -1.9000000000000006)]> 非运算(1) = 1 > [data[0](1, -2.1000000000000005) > bias(1, -2.0000000000000004)]> 非运算(1) = 1 > [data[0](1, -2.2000000000000006) > bias(1, -2.1000000000000005)]> 非运算(1) = 1 > [data[0](1, -2.3000000000000007) > bias(1, -2.2000000000000006)]> 非运算(0) = 1 > [data[0](0, -2.3000000000000007) > bias(1, -2.2000000000000006)]> 非运算(0) = 1 > [data[0](0, -2.400000000000001) > bias(1, -2.3000000000000007)]> 非运算(0) = 1 > [data[0](0, -2.500000000000001) > bias(1, -2.400000000000001)]> 非运算(1) = 1 > [data[0](1, -2.600000000000001) > bias(1, -2.500000000000001)]> 非运算(0) = 1 > [data[0](0, -2.700000000000001) > bias(1, -2.600000000000001)]> 非运算(1) = 1 > [data[0](1, -2.800000000000001) > bias(1, -2.700000000000001)]> 非运算(0) = 1 > [data[0](0, -2.9000000000000012) > bias(1, -2.800000000000001)]> 非运算(1) = 1 > [data[0](1, -3.0000000000000013) > bias(1, -2.9000000000000012)]> 非运算(1) = 1 > [data[0](1, -3.0000000000000013) > bias(1, -2.9000000000000012)]> 非运算(1) = 1 > [data[0](1, -3.0000000000000013) > bias(1, -2.9000000000000012)]> 非运算(0) = 1 > [data[0](0, -3.1000000000000014) > bias(1, -3.0000000000000013)]> 非运算(0) = 1 > [data[0](0, -3.1000000000000014) > bias(1, -3.0000000000000013)]> 非运算(1) = 1 > [data[0](1, -3.2000000000000015) > bias(1, -3.1000000000000014)]> 非运算(0) = 1 > [data[0](0, -3.3000000000000016) > bias(1, -3.2000000000000015)]> 非运算(1) = 1 > [data[0](1, -3.4000000000000017) > bias(1, -3.3000000000000016)]> 非运算(0) = 1 > [data[0](0, -3.5000000000000018) > bias(1, -3.4000000000000017)]> 非运算(0) = 1 > [data[0](0, -3.600000000000002) > bias(1, -3.5000000000000018)]> 非运算(1) = 1 > [data[0](1, -3.700000000000002) > bias(1, -3.600000000000002)]> 非运算(1) = 1 > [data[0](1, -3.700000000000002) > bias(1, -3.600000000000002)]> 非运算(1) = 1 > [data[0](1, -3.800000000000002) > bias(1, -3.700000000000002)]> 非运算(0) = 1 > [data[0](0, -3.800000000000002) > bias(1, -3.700000000000002)]> 非运算(1) = 1 > [data[0](1, -3.900000000000002) > bias(1, -3.800000000000002)]> 非运算(1) = 1 > [data[0](1, -4.000000000000002) > bias(1, -3.900000000000002)]> 非运算(1) = 1 > [data[0](1, -4.000000000000002) > bias(1, -3.900000000000002)]> 非运算(0) = 1 > [data[0](0, -4.000000000000002) > bias(1, -3.900000000000002)]> 非运算(0) = 1 > [data[0](0, -4.000000000000002) > bias(1, -3.900000000000002)]> 非运算(1) = 1 > [data[0](1, -4.100000000000001) > bias(1, -4.000000000000002)]> 非运算(1) = 1 > [data[0](1, -4.100000000000001) > bias(1, -4.000000000000002)]> 非运算(1) = 1 > [data[0](1, -4.200000000000001) > bias(1, -4.100000000000001)]> 非运算(0) = 1 > [data[0](0, -4.300000000000001) > bias(1, -4.200000000000001)]> 非运算(1) = 1 > [data[0](1, -4.300000000000001) > bias(1, -4.200000000000001)]> 非运算(1) = 1 > [data[0](1, -4.4) > bias(1, -4.300000000000001)]> 非运算(0) = 1 > [data[0](0, -4.5) > bias(1, -4.4)]> 非运算(0) = 1 > [data[0](0, -4.5) > bias(1, -4.4)]> 非运算(0) = 1 > [data[0](0, -4.5) > bias(1, -4.4)]> 非运算(0) = 1 > [data[0](0, -4.6) > bias(1, -4.5)]> 非运算(1) = 1 > [data[0](1, -4.699999999999999) > bias(1, -4.6)]> 非运算(0) = 1 > [data[0](0, -4.799999999999999) > bias(1, -4.699999999999999)]> 非运算(1) = 1 > [data[0](1, -4.799999999999999) > bias(1, -4.699999999999999)]> 非运算(0) = 1 > [data[0](0, -4.899999999999999) > bias(1, -4.799999999999999)]> 非运算(0) = 1 > [data[0](0, -4.999999999999998) > bias(1, -4.899999999999999)]> 非运算(0) = 1 > [data[0](0, -5.099999999999998) > bias(1, -4.999999999999998)]> 非运算(0) = 1 > [data[0](0, -5.1999999999999975) > bias(1, -5.099999999999998)]> 非运算(0) = 1 > [data[0](0, -5.299999999999997) > bias(1, -5.1999999999999975)]> 非运算(0) = 1 > [data[0](0, -5.299999999999997) > bias(1, -5.1999999999999975)]> 非运算(0) = 1 > [data[0](0, -5.299999999999997) > bias(1, -5.1999999999999975)]> 非运算(1) = 1 > [data[0](1, -5.299999999999997) > bias(1, -5.1999999999999975)]> 非运算(0) = 1 > [data[0](0, -5.299999999999997) > bias(1, -5.1999999999999975)]> 非运算(0) = 1 > [data[0](0, -5.299999999999997) > bias(1, -5.1999999999999975)]> 非运算(0) = 1 > [data[0](0, -5.399999999999997) > bias(1, -5.299999999999997)]> 非运算(0) = 1 > [data[0](0, -5.4999999999999964) > bias(1, -5.399999999999997)]> 非运算(1) = 1 > [data[0](1, -5.599999999999996) > bias(1, -5.4999999999999964)]> 非运算(0) = 1 > [data[0](0, -5.699999999999996) > bias(1, -5.599999999999996)]> 非运算(1) = 1 > [data[0](1, -5.799999999999995) > bias(1, -5.699999999999996)]> 非运算(0) = 1 > [data[0](0, -5.899999999999995) > bias(1, -5.799999999999995)]> 非运算(0) = 1 > [data[0](0, -5.999999999999995) > bias(1, -5.899999999999995)]> 非运算(0) = 1 > [data[0](0, -6.099999999999994) > bias(1, -5.999999999999995)]> 非运算(1) = 1 > [data[0](1, -6.199999999999994) > bias(1, -6.099999999999994)]> 非运算(0) = 1 > [data[0](0, -6.199999999999994) > bias(1, -6.099999999999994)]> 非运算(1) = 1 > [data[0](1, -6.199999999999994) > bias(1, -6.099999999999994)]> 非运算(1) = 1 > [data[0](1, -6.199999999999994) > bias(1, -6.099999999999994)]> 非运算(0) = 1 > [data[0](0, -6.199999999999994) > bias(1, -6.099999999999994)]> 非运算(1) = 1 > [data[0](1, -6.199999999999994) > bias(1, -6.099999999999994)]> 非运算(0) = 1 > [data[0](0, -6.199999999999994) > bias(1, -6.099999999999994)]> 非运算(1) = 1 > [data[0](1, -6.299999999999994) > bias(1, -6.199999999999994)]> 非运算(0) = 1 > [data[0](0, -6.399999999999993) > bias(1, -6.299999999999994)]

回答:

根据@[隐藏人名]的建议,我再次更新了问题,以便展示问题所在。这里是解决方案。

问题出在CALC函数上,该函数应该将输入的值乘以权重,但我却将其相加了。

不幸的是,我过于关注是否应该使用 sigmoid函数或其他函数,关注学习率和线性与非线性函数,以至于我没有发现这个错误。

感知器运行良好的事实真的把我带到了错误的方向上。

PerceptronData.prototype.calc = function () {    //var result = this.input + this.weight;//这是错误的... :(    var result = this.input * this.weight;    return result;};

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注