Я пытаюсь обучить 8-битную нейронную сеть для вывода XOR своих входов. Я использую библиотеку ffnet (http://ffnet.sourceforge.net/). Для небольшого количества входных битов (до 4) обратное распространение дает ожидаемые результаты. Для 8 битов NN, кажется, «сходится», то есть выводит одинаковое значение для любого входа. м с использованием многослойного NN: входы, скрытый слой, выход плюс узел смещения.
Я что-то не так делаю? Должен ли этот NN иметь определенную форму, чтобы научиться XOR?
Edit:
Это код, который я использую:
def experiment(bits, input, solution, iters):
conec = mlgraph( (bits, bits, 1) )
net = ffnet(conec)
net.randomweights()
net.train_momentum(input, solution, eta=0.5, momentum=0.0, maxiter=iters)
net.test(input, solution, iprint=2)
Я использую momentum=0.0
для получения чистого обратного распространения.
Это часть результатов, которые я получаю:
Testing results for 256 testing cases:
OUTPUT 1 (node nr 17):
Targets vs. outputs:
1 1.000000 0.041238
2 1.000000 0.041125
3 1.000000 0.041124
4 1.000000 0.041129
5 1.000000 0.041076
6 1.000000 0.041198
7 0.000000 0.041121
8 1.000000 0.041198
Так происходит для каждого вектора (256 значений)