Что не так с процедурой обучения моей нейронной сети? - PullRequest
0 голосов
/ 09 ноября 2019

Ради интереса, я реализовал свою собственную базовую нейронную сеть, которую я пытаюсь обучить с помощью рукописного набора данных MNIST. Я вполне уверен, что сама сеть работает.

Однако я немного озадачен тем, как ее тренировать. В настоящее время я делаю следующее:

repeat 5000 times
  for training_example in 500_examples  
       gradient+=backprop(training_example)  //sum the suggested changes in gradient for each ex
  gradient/=500                              //average across all examples
  weights += gradient*learningRate           //update the weights
  ...                                        //update biases

Однако, когда я подаю изображение, я получаю ответ, который кажется, что он просто угадывает каждое число ~ {0.1, 0.1, 0.1, ....}.

Дальнейшее подтверждение этогокогда я обучаю его только двум примерам, которые являются числами 0 и 5. Ответ, независимо от того, что я кормлю (даже когда я кормлю один из примеров), равен ~{0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0}.

При обучении с одним примером(0), я получаю ожидаемый результат при кормлении в тренировочном примере (конечно, так как он просто оптимизирован, чтобы угадывать одно и то же каждый раз). ~{1.0, 0.0 ...}

Что-то не так с самой моей процедурой обучения, или мне просто нужно отладить мой код?

...