首页 > 解决方案 > 如何在 TensorFlow 中提高 CNN 的预测能力?

问题描述

我在 TensorFlow 中使用具有两个卷积层、一个全连接层和一个线性层的 CNN 来预测对象大小。标签是尺寸,特征是图像。

为了评估网络的性能,我使用了五重交叉验证。使用 TensorBoard 我绘制了训练集和交叉验证集的准确度。

两种准确度都增加了,但交叉验证准确度增加得更慢。认为精度的差异是由于模型过度拟合,我尝试使用 L2 正则化来正则化权重。但是,这只是降低了训练精度,而交叉验证精度的趋势保持不变。交叉验证准确率始终保持在 50% 以下。

谁能推荐一些我可能考虑的方法来提高交叉验证的准确性,从而提高模型的预测能力?非常感谢。

没有正则化训练准确度为灰色,交叉验证准确度为绿色。

正则化训练准确度为蓝色,交叉验证准确度为红色。

标签: pythontensorflowdeep-learningconv-neural-network

解决方案


过度拟合有多种补救措施。仅举几例:

  • 正则化:你可以尝试添加 Dropout 层,而不是 L2 正则化,看看模型的表现如何。Dropout 层在训练期间停用某些神经元,迫使模型也依赖其他神经元。
  • 数据增强:有多种技术可以增强您的训练数据。您可以使用图像处理技术生成新图像,也可以使现有图像更“适合 CNN”。要搜索的一些关键字是数据中心化和标准化/标准化、zca 白化、传统图像处理(例如缩放/裁剪、反转、滤色器、移位/倾斜、扭曲和旋转功能以及基于 NN 的数据增强技术)。
  • 模型架构:更改模型架构将导致更高(过度拟合)或更低(欠拟合)的一般性损失。试验层数、卷积核大小并考虑使用预训练网络(迁移学习),例如 Inception v3、AlexNet、GoogLeNet、VGG-16 等。

当然还有一百万种其他方式,但这是一个很好的起点。


推荐阅读