【问题标题】:How can I improve the predictive power of a CNN in TensorFlow?如何在 TensorFlow 中提高 CNN 的预测能力?
【发布时间】:2019-02-12 06:57:45
【问题描述】:

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

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

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

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

without regularization灰色为训练准确率,绿色为交叉验证准确率。

with regularization蓝色为训练准确率,红色为交叉验证准确率。

【问题讨论】:

  • 我发现添加 dropout 层可以显着提高准确性。我也会尝试批量大小。通过图像分类,我在小批量的情况下取得了很好的效果。

标签: python tensorflow deep-learning conv-neural-network


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2020-01-02
    • 2021-04-01
    • 2018-09-26
    • 2016-03-14
    相关资源
    最近更新 更多