Пишу сверточную нейронную сеть на
C++ с нуля (исключительно в образовательных целях). Написал реализацию прямого распространения всех используемых слоев. Написал обратное распространение и корректировку весов со смещениями последних полносвязных слоев, но даже после нескольких полных проходов всего датасета
MNIST сетка не начинает лучше распознавать изображения (как было
9-10% так и осталось
9-10%).
Вопрос. Я ошибся в реализации чего-то или для того, чтобы
CNN хоть немного лучше стала распозновать изображения недостаточно обучить только последние слои?
P.S. Архитектура используемой
CNN:
- Входящий слой 28x28x1.
- Сверточный слой 24x24x20.
- Объединяющий слой 12x12x20.
- Сверточный слой 8x8x50 .
- Объединяющий слой 4x4x50.
- Полносвязный слой 500.
- Выходящий слой 10.