在使用MNIST数据集训练的CNN进行数字识别时的表现不佳

我使用tensorflow训练了一个CNN模型来进行MNIST数据集的数字识别。测试集上的准确率接近98%

我想要使用自己创建的数据来预测数字,结果却很差。

我对自己写的图像做了什么?

我分割出每个数字,并将其转换为灰度,然后调整图像大小至28x28,最后输入到模型中。

为什么我的数据集上的准确率这么低,而测试集上的准确率却这么高呢?

我还需要对图像进行其他修改吗?

编辑:

这是图像的链接以及一些示例:

数字7的图像数字5数字9数字6


回答:

排除错误和明显的失误,我的猜测是您捕捉手写数字的方式与训练集差异太大。

在捕捉数据时,您应该尽可能模仿创建MNIST数据集的过程:

来自官方MNIST数据集网站的说明:

来自NIST的原始黑白(双色)图像被大小归一化为适合20×20像素的框,同时保持其纵横比。归一化算法使用的抗锯齿技术使得结果图像包含灰度级。图像通过计算像素的质心并将图像平移,使该点位于28×28图像的中心来居中处理。

如果您的数据在训练和测试阶段有不同的处理方式,那么您的模型将无法从训练数据泛化到测试数据。

因此,我有两个建议给您:

  1. 尝试捕捉和处理您的数字图像,使其尽可能与MNIST数据集相似;
  2. 将您的一些示例添加到训练数据中,让您的模型能够在与您分类相似的图像上进行训练;

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注