XOR не разрешается с использованием одного персептрона со стандартным скалярным продуктом и ступенчатой функцией.Как запустить 2-слойный персептрон для решения XOR
В данной статье предлагается использовать 3 персептрон, чтобы сделать сеть: http://toritris.weebly.com/perceptron-5-xor-how--why-neurons-work-together.html
Я пытаюсь запустить 3-персептрон СЕТЕВОЕ таким образом, но это не дает правильные результаты для XOR:
//pseudocode
class perceptron {
constructor(training_data) {
this.training_data = training_data
}
train() {
iterate multiple times over training data
to train weights
}
unit_step(value) {
if (value<0) return 0
else return 1
}
compute(input) {
weights = this.train()
sum = scalar_product(input,weights)
return unit_step(sum)
}
}
Вышеуказанный персептрон может правильно решить NOT, AND, ИЛИ бит. Это, как я использую 3 персептроны решить XOR:
AND_perceptron = perceptron([
{Input:[0,0],Output:0},
{Input:[0,1],Output:0},
{Input:[1,0],Output:0},
{Input:[1,1],Output:1}
])
OR_perceptron = perceptron([
{Input:[0,0],Output:0},
{Input:[0,1],Output:1},
{Input:[1,0],Output:1},
{Input:[1,1],Output:1}
])
XOR_perceptron = perceptron([
{Input:[0,0],Output:0},
{Input:[0,1],Output:1},
{Input:[1,0],Output:1},
{Input:[1,1],Output:0}
])
test_x1 = 0
test_x2 = 1
//first layer of perceptrons
and_result = AND_perceptron.compute(test_x1,test_x2)
or_result = OR_perceptron.compute(test_x1,test_x2)
//second layer
final_result = XOR_perceptron.compute(and_result,or_result)
final_result выше не согласуется, иногда 0, иногда 1. Кажется, я бегу в 2 слоя неправильно. Как правильно запустить эти 3 персептрона в 2 слоя?
tks, поэтому я могу использовать 2 персептрона, которые могут узнать И, ИЛИ, и сделать результат для XOR на основе этих 2 персептронов – johnlowvale