Как фильтры в сверточной нейронной сети обучаются с помощью обратного распространения? - PullRequest
1 голос
/ 06 мая 2019

Я пытаюсь реализовать сверточную нейронную сеть с нуля.Проблема в том, что я не понимаю, как фильтры изучаются в CNN.

Я реализовал нейронную сеть с прямой связью с нуля раньше, и я понимаю, как обратное распространение работает для них.Я также понимаю основную архитектуру CNN.Но как вычислить обновленные фильтры?

Я не хочу использовать такие библиотеки, как tenorflow, потому что я хочу понять концепции, лежащие в основе всего этого.

1 Ответ

0 голосов
/ 06 мая 2019

Обратное распространение через CNN в основном такое же, как и через слой прямой связи. Вы можете представить себе CNN как скользящее окно, применяющее один и тот же слой прямой связи к каждому окну ввода. (Вы просто берете все значения, которые есть в окне, и размещаете их в одном длинном векторе.)

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

P.S. Это может быть хорошим упражнением, чтобы написать обратное распространение самостоятельно, но вы вряд ли сможете достичь эффективности фреймворков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...