Требуется информация обратного распространения нейронной сети XOR - PullRequest
4 голосов
/ 05 мая 2009

Кто-нибудь знает, где я могу найти примеры кодов о распространении NN Back для XOR, что я могу также протестировать систему после ее обучения?

Предпочтительно на C ++ или MATLAB.

Ответы [ 3 ]

3 голосов
/ 05 мая 2009

Я рекомендую 'Пошаговое руководство по внедрению нейронной сети в C' Джона А. Буллинария.

Это очень простой пример того, как реализовать многослойную нейронную сеть, способную научиться XOR.

Код, представленный в статье, написан на C, что очень легко понять. Большинство статей «введение в нейронную сеть» в сети основаны на объектно-ориентированных и представлены в виде библиотек многократного использования, что может затруднить их понимание и начало работы.

0 голосов
/ 15 мая 2015

Я написал один здесь , что, на мой взгляд, действительно очень просто. Ох, что, черт возьми. Я просто перепишу код здесь.

function layer2 = xornn2(iters)
    if nargin < 1
        iters = 50
    end
    T = [0 1 1 0];
    X = [0 0 1 1; 0 1 0 1; 1 1 1 1];
    m = size(T,2);
    inputsz = size(X,1)-1;
    hiddensz = 3;
    outputsz = size(T,1);
    theta1 = randn(hiddensz, 1+inputsz);
    theta2 = randn(outputsz, 1+hiddensz);
    for i = [1:iters]
        layer1 = [logsig(theta1 * X); ones(1,m)];
        layer2 = logsig(theta2 * layer1);
        delta2 = T - layer2;
        delta1 = layer1 .* (1-layer1) .* (theta2' * delta2);
        % remove the bias from delta 1. There's no real point in a delta on the bias.
        delta1 = delta1(1:(end-1),:);
        theta2d = delta2 * layer1';
        theta1d = delta1 * X';
        theta1 = theta1 + 0.1 * theta1d;
        theta2 = theta2 + 0.1 * theta2d;
    end
end

Случайная инициализация может быть улучшена. (Я бы сделал это sqrt (6 ./ (fanin + fanout)) ... (Это из статьи Йошуа Бенжио ..) Но, в принципе, это работает .. Попробуйте это, например, с xornn (10000). Вы должны быть в состоянии изменить hiddensz на что угодно> = 2.

0 голосов
/ 05 мая 2009

Вы получили несколько ответов, касающихся кода C, так что вот демонстрационная версия XOR для MATLAB . Демонстрация написана для более старой версии MATLAB (версия 6) и требует Neural Network Toolbox , но, надеюсь, все же даст вам некоторые идеи о том, как реализовать сеть.

РЕДАКТИРОВАТЬ: Для получения более общей информации об алгоритмах обратного распространения в Neural Network Toolbox я бы предложил онлайн-документацию на веб-сайте MathWorks .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...