Используется ли batchnorm в нейронных сетях, которые не являются CNN? - PullRequest
0 голосов
/ 25 апреля 2018

1.) Batchnorm всегда используется в глубоких сверточных нейронных сетях.Но это также используется в не-CNN.В NN.В сетях только с полностью подключенными слоями?

2.) Используется ли batchnorm в неглубоких CNN?

3.) Если у меня есть CNN с входным изображением и входным массивом IN_array,output - это массив после последнего полностью подключенного слоя.Я называю этот массив FC_array.Если я хочу соединить этот FC_array с IN_array.

CONCAT_array = tf.concat(values=[FC_array, IN_array])

Полезно ли иметь bachnorm после слоя concat?Или этот пакет должен быть сразу после FC_array перед слоем concat?

Для информации, IN_array - это вектор tf.one_hot ().

Спасибо

1 Ответ

0 голосов
/ 26 апреля 2018

TL; DR : 1. Да 2. Да 3. Нет


TS; WM
  1. Нормализация партии было отличным изобретением Сергея Иоффе и Кристиана Сегеди в начале 2015 года. В те времена борьба с исчезающими или взрывающимися градиентами была повседневной проблемой. Прочтите эту статью, если вы хотите получить глубокое понимание. но в основном эта цитата из резюме должна дать вам некоторое представление:

Обучение глубоким нейронным сетям осложняется тем фактом, что распределение входов каждого слоя изменяется во время обучения по мере изменения параметров предыдущих слоев. Это замедляет обучение, требуя более низких скоростей обучения и тщательной инициализации параметров, и делает общеизвестно трудным обучение моделей с насыщающими нелинейностями. Мы называем это явление внутренним ковариатным сдвигом и решаем проблему путем нормализации входных данных слоя.

Фактически, они сначала использовали пакетную нормализацию для DCNN, что позволило им превзойти производительность человека в топ-5 классификации ImageNet, но любая сеть, в которой есть нелинейности, может извлечь выгоду из пакетной нормализации. Включая сеть, состоящую из полностью связанных слоев.

  1. Да, он также используется для мелких CNN. Любая сеть с более чем одним уровнем может извлечь из этого пользу, хотя это правда, что более глубокие сети получают больше преимуществ.

  2. Прежде всего, векторы с одним горячим током должны никогда быть нормализованными. Нормализация означает, что вы вычитаете среднее значение и делите на дисперсию, создавая тем самым набор данных с 0 средним и 1 дисперсией. Если вы сделаете это для одного горячего вектора, тогда вычисление кросс-энтропийных потерь будет полностью отключено. Во-вторых, нет смысла нормализовать конкататный слой отдельно, так как он не меняет значения, а просто объединяет их. Пакетная нормализация выполняется на входе слоя, поэтому тот, который находится после конкатата, который получит объединенные значения, может сделать это при необходимости.

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