У меня есть самостоятельная реализация нейронной сети с частотой обучения, импульсом, регуляризацией L1 / L2 и пакетной нормализацией. Когда я выполняю проверку градиента, все градиенты верны, кроме случаев, когда я использую пакетную нормализацию
Я написал код на Python для проверки градиента только при нормализации партии:
https://gist.github.com/arnaldog12/9ba321cfdb18b6955a83403df1a7f514
Для кода выше я попытался удалить весь ненужный код, такой как импульс, выпадение и регуляризация L1 / L2. Если вы просто скопируете и вставите приведенный выше код в какую-либо среду Python с помощью numpy, это сработает.
Я считаю, что ошибка в градиенте, который я передаю функции batchnorm_backward и градиентах, которые я вычисляю позже. В настоящее время я отлаживаю код, но не могу найти, что не так.
Кто-нибудь уже выполнил проверку градиента при нормализации партии?
Если так, что я делаю не так?