首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么批量标准化会降低我的模型训练精度?

为什么批量标准化会降低我的模型训练精度?
EN

Stack Overflow用户
提问于 2021-03-04 16:13:20
回答 1查看 129关注 0票数 0

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

代码语言:javascript
复制
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'])
EN

回答 1

Stack Overflow用户

发布于 2021-03-04 16:26:36

批量标准化并不能保证你的性能会提高。但在某些情况下,它确实工作得很好。

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

  1. 增加训练的批量大小。这将为normalisation.

提供更接近的平均值和标准差

  1. 使用BN参数,特别是动量参数。请在此处查看有关参数https://keras.io/api/layers/normalization_layers/batch_normalization/的更多信息,我建议降低动量并重试。

  1. 如果它仍然不起作用,就把它去掉。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66470994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档