Нейронная сеть, питон - PullRequest
       14

Нейронная сеть, питон

2 голосов
/ 05 сентября 2010

Я пытаюсь написать простую нейронную сеть, которая может придумать веса для, скажем, функции y = x.Вот мой код: http://codepad.org/rPdZ7fOz

Как видите, уровень ошибок на самом деле никогда не сильно падает.Я пытался изменить импульс и скорость обучения, но это не сильно помогло.Правильно ли указан мой номер ввода, скрыт и вывод для того, что я хочу сделать?Если нет, что это должно быть?Если так, что еще может быть не так?

1 Ответ

2 голосов
/ 05 сентября 2010

Вы пытаетесь обучить сеть выдавать выходные значения 1,2,3,4, насколько я понял. Тем не менее, на выходе вы используете сигмоид (math.tanh(..)), значения которого всегда находятся в диапазоне от -1 до 1.

Таким образом, выход вашей нейронной сети всегда находится между -1 и 1, и, таким образом, вы всегда получаете большую ошибку, когда пытаетесь подогнать выходные значения за пределы этого диапазона.

(Я только что проверил, что при масштабировании ваших входных и выходных значений на 0,1, кажется, что есть хороший прогресс в обучении, и я получаю в конце:

error 0.00025

)

Используемая вами нейронная сеть полезна, если вы хотите выполнить классификацию (например, назначить точку данных для класса A, если выходной NN равен <0, или B, если он> 0). Похоже, что вы хотите сделать, это регрессия (соответствует реальной функции).

Вы можете удалить сигмоид на выходном узле, но вам придется немного изменить процедуру обратного распространения, чтобы учесть это.

...