@CNNRNN

Где у меня ошибка в обучения нейронной сети?

Доброго время суток! Скажите пожалуйста, правильно ли я понял алгоритм backpropagation .
Пример сети.
Входные данные = Sample матрица размером 784x1
Входной слой = Input, матрица размером 10х784
Скрытый слой = Hidden, матрица размером 10х10
Выходной слой = Out, матрица размером 10х10

После прямого распространения получили:
Слой А = Sample * Input
Слой B = А * Hidden
Слой C = B * Out

Сам backpropagation .
1) Что бы обновить вес на последнем слое - Out нам нужно
delta =(Ожидаемый - Результат сети) * на производную функции активации слоя Out
gradient = (матрицу слоя C транспонируем и умножаем на матрицу delta) * скорость обучения
new_weight = слой Out - gradient

2) Что бы обновить на скрытом слое и последующих мне нужно
delta = ошибку предыдущего слоя( delta Out) * на производную функции активации слоя Hidden
gradient = (матрицу слоя B транспонируем и умножаем на матрицу delta) * скорость обучения
new_weight = слой Hidden - gradient

Я реализовал это в коде,но при обновление весов у меня получаются разные матрицы и я не могу произвести последнею операцию. Умножение на функцию активации я специально опустил .
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
@CNNRNN Автор вопроса
И так ошибка в алгоритме. Есть замечательная книга "Создай свою нейросеть" от автора Тарика Рашида в ней отлично объясняется алгоритм . Не рекламы ради .
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@dmshar
Ну как где? Вестимо в коде программы, которую мы не видим.
P.S. Только пожалуйста, не надо сюда вываливать ваш код. А тем более - контрольные данные.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы