首页 > 解决方案 > 迁移学习时的批量标准化

问题描述

我目前正在使用 MobilenetV2 架构进行迁移学习。在分类之前,我在顶部添加了几个 Dense 层。我应该BatchNormalization在这些层之间添加吗?

base_model = MobileNetV2(weights='imagenet', include_top=False, input_shape=(200,200,3))
x = base_model.output
x = GlobalAveragePooling2D(name="Class_pool")(x)
x = Dense(512, activation='relu')(x)
x = BatchNormalization()(x)
x = Dropout(.4)(x)
x = Dense(1024, activation='relu')(x)
x = BatchNormalization()(x)
x = Dropout(.4)(x)
x = Dense(512, activation='relu')(x)
x = BatchNormalization()(x)
x = Dropout(.4)(x)
x = Dense(512, activation='relu')(x)
x = BatchNormalization()(x)
X = Dense(20,activation='softmax')(x)

我之前在没有任何这些批量标准化层的情况下训练了这个网络,并且一直在努力获得良好的准确性。在尝试了许多学习率和冻结层的组合后,我只是半成功。我希望这会有所帮助 太多BatchNormalization层对网络有害吗?

标签: pythontensorflowkerastransfer-learningbatch-normalization

解决方案


批量标准化将有助于协方差偏移,并且当您批量训练新数据时,这对网络来说是一件好事。没有什么比 BatchNormalization 更多的了,只是放在每个有激活的层之后。


推荐阅读