python - 如何在 TensorFlow 中提高 CNN 的预测能力?
问题描述
我在 TensorFlow 中使用具有两个卷积层、一个全连接层和一个线性层的 CNN 来预测对象大小。标签是尺寸,特征是图像。
为了评估网络的性能,我使用了五重交叉验证。使用 TensorBoard 我绘制了训练集和交叉验证集的准确度。
两种准确度都增加了,但交叉验证准确度增加得更慢。认为精度的差异是由于模型过度拟合,我尝试使用 L2 正则化来正则化权重。但是,这只是降低了训练精度,而交叉验证精度的趋势保持不变。交叉验证准确率始终保持在 50% 以下。
谁能推荐一些我可能考虑的方法来提高交叉验证的准确性,从而提高模型的预测能力?非常感谢。
没有正则化训练准确度为灰色,交叉验证准确度为绿色。
正则化训练准确度为蓝色,交叉验证准确度为红色。
解决方案
过度拟合有多种补救措施。仅举几例:
- 正则化:你可以尝试添加 Dropout 层,而不是 L2 正则化,看看模型的表现如何。Dropout 层在训练期间停用某些神经元,迫使模型也依赖其他神经元。
- 数据增强:有多种技术可以增强您的训练数据。您可以使用图像处理技术生成新图像,也可以使现有图像更“适合 CNN”。要搜索的一些关键字是数据中心化和标准化/标准化、zca 白化、传统图像处理(例如缩放/裁剪、反转、滤色器、移位/倾斜、扭曲和旋转功能以及基于 NN 的数据增强技术)。
- 模型架构:更改模型架构将导致更高(过度拟合)或更低(欠拟合)的一般性损失。试验层数、卷积核大小并考虑使用预训练网络(迁移学习),例如 Inception v3、AlexNet、GoogLeNet、VGG-16 等。
当然还有一百万种其他方式,但这是一个很好的起点。
推荐阅读
- amazon-web-services - AWS Route 53 - 如何将流量路由到负载均衡器,包括上下文路径?
- laravel - 使用数据表中的一个下拉过滤器进行多表搜索
- terraform - 如果我可以更改目录,terraform 1.0.6 找不到提供者
- python - 使用python从字符串中提取数据(将字符串字典转换为字典)
- javascript - 放置 div 后如何在网站中设置背景图片?
- ios - 如何重新注册 iOS 设备以接收钱包中已有通行证的推送通知?通行证
- javascript - React-将值从上一个表单页面传递到下一个表单页面以显示和设置值
- azure-data-factory - Azure 数据工厂 - 遍历具有多行的 JSON 数组
- javascript - 使用所选选项的变量值调用数组
- javascript - 带有严格相等运算符问题的 Javascript if 语句