Проблема с простой искусственной нейронной сетью - добавление

Я пытаюсь заставить простую искусственную нейронную сеть работать с алгоритмом обратного распространения. Я создал ИНС и считаю, что правильно реализовал алгоритм BP, но я, конечно, могу ошибаться.

Прямо сейчас я пытаюсь обучить сеть, давая ей два случайных числа (a, b) между 0 и 0,5, и добавив их. Тогда, конечно, каждый раз, когда выходной сигнал сети сравнивается с теоретическим ответом a + b (который всегда будет достижим с помощью сигмоидной функции).

Как ни странно, выходной сигнал всегда сходится к числу от 0 до 1 (как и должно быть, из-за сигмовидной функции), но вводимые мной случайные числа, похоже, не влияют на это.

Редактировать: К сожалению, похоже, это не сходится. Вот изображение результата:

enter image description here

Веса случайным образом распределяются между -1 и 1, но я также пробовал между 0 и 1.

Я также попытался присвоить ему два постоянных числа (0,35,0,9) и попытаться приучить его выплевывать 0.5. Это работает и очень быстро сходится к 0,5. Я также научил его выплевывать 0,5, если я даю ему любые два случайных числа от 0 до 1, и это тоже работает.

Если вместо этого, моя цель:

vector target;
target.push_back(.5);

Тогда он сходится очень быстро, даже при случайном вводе:

enter image description here

Я пробовал несколько разных сетей, так как я упростил добавление слоев в мою сеть. Стандартный, который я использую, - это один с двумя входами, один слой из 2 нейронов и второй слой только из одного нейрона (выходной нейрон). Однако я также попытался добавить несколько слоев и добавить к ним нейроны. Кажется, это ничего не меняет. Моя скорость обучения равна 1,0, хотя я пробовал равняться 0,5, и это не сильно отличалось.

Кто-нибудь знает, что я мог бы попробовать?

Может ли ИНС на это вообще? Я не могу себе представить, чтобы это было не так, поскольку их можно научить делать такие сложные вещи.

Есть совет? Спасибо!

Вот где я его обучаю:

//Initialize it. This will be one with 2 layers, the first having 2 Neurons and the second (output layer) having 1.
vector networkSize;
networkSize.push_back(2);
networkSize.push_back(1);
NeuralNetwork myNet(networkSize,2);

for(int i = 0; i<5000; i++){
    double a = randSmallNum();
    double b = randSmallNum();
    cout << "\n\n\nInputs: " << a << ", " << b << " with expected target: " << a + b;

    vector myInput;
    myInput.push_back(a);   
    myInput.push_back(b);   

    vector target;
    target.push_back(a + b);

    cout << endl << "Iteration " << i;
    vector output = myNet.backPropagate(myInput,target);
    cout << "Output gotten: " << output[0];
    resultPlot << i << "\t" << abs(output[0] - target[0]) << endl;
}

Редактировать: Я настроил свою сеть и следую этому руководству: PDF-файл . Я реализовал " Я хочу работать на machine2.abc.def.edu, к которой я могу подключиться только через machine1.abc.def.edu. Мое имя пользователя - мое имя, на обоих ...

Может кто-нибудь помочь мне настроить Emacs Tramp на двойной прыжок? Я хочу работать на machine2.abc.def.edu, к которой я могу подключиться только через machine1.abc.def.edu. Мое имя пользователя - myname, на обеих машинах одно и то же.

Я пытался добавить .emacs:

(add-to-list 'tramp-default-proxies-alist
          '("\\`machine2\\.abc\\.def\\.edu\\'"
            "\\`myname\\'"
            "/ssh:machine1\\.abc\\.def\\.edu:"))

Это моя лучшая интерпретация того, что написано в руководстве. Тогда я делаю: Cx Cf /ssh:machine2.abc.def.edu или: Cx Cf / ssh: rsuhada@machine2.abc.def.edu

Но оба дают:

ssh: Could not resolve hostname ssh: nodename nor servname provided, or not known
Process *tramp/scpc ssh* exited abnormally with code 255

И мои Аквамаки не могут быть закрыты и должны быть убиты из оболочки ... Здесь есть двухлетняя ветка с тем же вопросом. Я попробовал ответить оттуда:

(add-to-list 'tramp-default-proxies-alist
          '("machine2.abc.def.edu"
            nil
            "/ssh:myname@machine1.abc.def.edu:"))

С теми же результатами ... также для всех комбинаций, которые я мог придумать ... Однако удаленное редактирование на machine1.abc.def.edu работает нормально.

5
задан tshepang 24 August 2014 в 00:05
поделиться