【问题标题】:Why is batch normalization reducing my model training accuracy?为什么批量标准化会降低我的模型训练准确性?
【发布时间】:2021-03-04 08:13:20
【问题描述】:

在我添加批量归一化层之前,我的模型的训练准确度为 97%,但是一旦我添加了批量归一化层,我的准确度就下降到了 70%。为什么会发生这种情况以及在进行批量标准化的同时提高准确性的任何方法?

model = Sequential()
    model.add(Conv2D(32, (3, 3), input_shape=input_shape))
    model.add(Activation('relu'))
    model.add(BatchNormalization())
    model.add(MaxPooling2D(pool_size=(2, 2)))
    
    #first hidden layer 
    model.add(Conv2D(32, (3, 3)))
    model.add(Activation('relu'))
    model.add(BatchNormalization())
    model.add(MaxPooling2D(pool_size=(2, 2)))
    
    #output layer
    model.add(Flatten())
    model.add(Dense(64))
    model.add(Activation('relu'))
    model.add(Dropout(0.5))
    model.add(Dense(1))
    model.add(Activation('sigmoid'))
    model.summary()
    
    model_checkpoint = ModelCheckpoint( "model.hdf5", verbose=1, save_best_only=True)
    model.compile(loss='binary_crossentropy',
                  optimizer= 'adam',
                  metrics=['accuracy'])

【问题讨论】:

    标签: tensorflow keras conv-neural-network batch-normalization


    【解决方案1】:

    批量标准化并不能保证您的性能会提高。但它在某些情况下确实有效。

    您可以尝试做的一件事是:

    1. 增加训练的批量大小。这将为标准化提供更合适的均值和​​标准差。

    2. 使用 BN 参数,特别是动量参数。在这里查看更多关于参数https://keras.io/api/layers/normalization_layers/batch_normalization/ 我会建议减少动力再试一次。

    3. 如果还是不行,就别管了。

    【讨论】:

      猜你喜欢
      • 2020-11-19
      • 2019-12-18
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      • 2020-09-03
      • 2020-02-29
      • 1970-01-01
      相关资源
      最近更新 更多