2017-02-21 30 views
5
def conv2d_bn(x, nb_filter, nb_row, nb_col, 
       border_mode='same', subsample=(1, 1), 
       name=None): 
    '''Utility function to apply conv + BN. 
    ''' 

    x = Convolution2D(nb_filter, nb_row, nb_col, 
         subsample=subsample, 
         activation='relu', 
         border_mode=border_mode, 
         name=conv_name)(x) 
    x = BatchNormalization(axis=bn_axis, name=bn_name)(x) 
    return x 

Когда я использую официальную модель inception_v3 в keras, я нахожу, что они используют BatchNormalization после нелинейности 'relu', как указано выше.добавить пакетную нормализацию непосредственно перед нелинейностью или после в Keras?

Но в пакетной Нормализации бумаге, авторы сказали

мы добавим сразу преобразование BN до нелинейности, по нормировке х = У + Ь.

Затем я рассматриваю реализацию начала в тензорном потоке, который добавляет BN непосредственно перед нелинейностью, как они говорили. Для получения дополнительной информации в inception ops.py

Я смущен. Почему люди используют выше стиль в Keras, кроме следующих?

def conv2d_bn(x, nb_filter, nb_row, nb_col, 
       border_mode='same', subsample=(1, 1), 
       name=None): 
    '''Utility function to apply conv + BN. 
    ''' 

    x = Convolution2D(nb_filter, nb_row, nb_col, 
         subsample=subsample, 
         border_mode=border_mode, 
         name=conv_name)(x) 
    x = BatchNormalization(axis=bn_axis, name=bn_name)(x) 
    x = Activation('relu')(x) 
    return x 

В плотном случае:

x = Dense(1024, name='fc')(x) 
x = BatchNormalization(axis=bn_axis, name=bn_name)(x) 
x = Activation('relu')(x) 

ответ

0

Я также использую его перед активацией, которая на самом деле, как он был разработан, и так делают другие библиотеки, такие как batch_norm лазанью в http://lasagne.readthedocs.io/en/latest/modules/layers/normalization.html#lasagne.layers.batch_norm.

Однако, кажется, что на практике размещение его после активации работает немного лучше:

https://github.com/ducha-aiki/caffenet-benchmark/blob/master/batchnorm.md (это только один тест, хотя)