python - 迁移学习时的批量标准化
问题描述
我目前正在使用 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
层对网络有害吗?
解决方案
批量标准化将有助于协方差偏移,并且当您批量训练新数据时,这对网络来说是一件好事。没有什么比 BatchNormalization 更多的了,只是放在每个有激活的层之后。
推荐阅读
- r - 如何重命名 getSymbols 的返回数据?
- azure - PowerBI - 使用 Azure Blob 作为数据流的数据源
- c# - 使用 C# EPPlus 根据 excel 中的单元格文本更改单元格背景颜色
- c - 为什么在查找倾斜内存地址的行时需要 char* 强制转换?
- excel - 我可以从参考单元格的同一行但不同的列中获取单元格内容吗?
- android - 无法在初始屏幕上显示插页式广告
- javascript - 我的 ReactJS 网站中没有显示 Font-Awesome 图标
- mongodb - 无法通过redash连接mongodb
- javascript - 如何导入jsonwebtoken的verify抛出的TokenExpiredError?
- .net-core - 当这些包的版本优于运行时的版本时,如何恢复 nuget 包?