Нейронная сеть для распознавания букв - PullRequest
7 голосов
/ 14 октября 2010

Я пытаюсь добавить в код однослойную нейронную сеть, которая принимает растровое изображение в качестве входных данных и имеет 26 выходных данных для вероятности каждой буквы в алфавите.относительно одного скрытого слоя, который добавляется.Правильно ли я считаю, что скрытый слой будет иметь свой собственный набор только выходных значений и весов?Это не должно иметь своего собственного смещения?

Могу ли я также подтвердить, что я правильно думаю об аспекте обратной связи?Вот некоторый псевдокод:

// input => hidden
for j in hiddenOutput.length:
    sum=inputs*hiddenWeights
    hiddenOutput[j] = activationFunction(sum)
// hidden => output
for j in output.length:
    sum=hiddenOutputs*weights
    output[j] = activationFunction(sum)

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

Ответы [ 3 ]

1 голос
/ 30 ноября 2010

Дилан, это, вероятно, еще долго после того, как твое домашнее задание было назначено, но у меня есть несколько мыслей о том, что ты написал.

  • Сделать скрытый слой намного больше, чем размер входных растровых изображений.
  • Вы должны иметь разные веса и смещения от ввода -> скрытый, чем от скрытого -> вывод.
  • Потратьте много времени на свою функцию ошибки (дискриминатор).
  • Поймите, что нейронные сети имеют тенденцию быстро привязываться к набору весов (обычно это неправильно). Вам нужно будет начать все сначала и тренироваться в другом порядке.

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

0 голосов
/ 19 сентября 2012

Что касается использования смещений терминов, я нашел раздел Зачем использовать смещение / порог? в comp.ai.neural-nets FAQ очень полезно. Я настоятельно рекомендую прочитать этот FAQ.

0 голосов
/ 12 декабря 2010

вы можете прочитать http://www.ai -junkie.com / ann / evolved / nnt1.html .там точно говорится о том, что вы делаете.Это также обеспечило код наряду с (главным образом) простым объяснением того, как это изучает.Хотя аспект обучения полностью отличается от прямой передачи, мы надеемся, что это даст вам некоторые идеи о природе NN.

Я считаю, что даже скрытый и выходной слои должны иметь смещение.

Также NN может быть хитрым, попробуйте сначала определить только 1 букву.Получение согласованного высокого / низкого сигнала только с одного выхода.Затем попробуйте сохранить этот сигнал с различными вариациями одной и той же буквы.Тогда вы можете прогрессировать и добавлять больше.Вы можете сделать это, обучив 26 различных сетей, которые дают выход только на совпадение.Или, может быть, вы делаете это как один большой NN с 26 выходами.Два разных подхода.

...