Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 英语字母和数字识别的最佳模式_Python_Machine Learning_Tensorflow_Neural Network_Conv Neural Network - Fatal编程技术网

Python 英语字母和数字识别的最佳模式

Python 英语字母和数字识别的最佳模式,python,machine-learning,tensorflow,neural-network,conv-neural-network,Python,Machine Learning,Tensorflow,Neural Network,Conv Neural Network,我有一个相当大的数据集(超过0.5百万张50x50张图片),总共包含62个类。图像表示英文字母和数字(全部手写)。每个班级至少有2000个样本 我一直在训练卷积神经网络,用Tensorflow识别这些图像 问题:在快速(大约200次训练迭代)接近局部最优值(损失值如0.01)后,我的分类器在测试集上的准确率停留在82%左右 问题:我如何才能获得更高的准确性?我对CNN有什么不对吗?还有,尝试SVM值得吗?我根据下面的CNN模型给出了详细信息 随机数据集条目: 问题2:除了旋转模式,我的预处理方法

我有一个相当大的数据集(超过0.5百万张50x50张图片),总共包含62个类。图像表示英文字母和数字(全部手写)。每个班级至少有2000个样本

我一直在训练卷积神经网络,用Tensorflow识别这些图像

问题:在快速(大约200次训练迭代)接近局部最优值(损失值如0.01)后,我的分类器在测试集上的准确率停留在82%左右

问题:我如何才能获得更高的准确性?我对CNN有什么不对吗?还有,尝试SVM值得吗?我根据下面的CNN模型给出了详细信息

随机数据集条目: 问题2:除了旋转模式,我的预处理方法好吗?我是拉伸图案还是保持原样:左右边距区域有多余的白色像素

详细信息和超参数

  • Tensorflow优化器:AdamOptimizer
  • 学习率α:
    0.001
  • 辍学:
    1.0
    (无辍学)
  • 最小批量:
    1500
  • 卷积层数:
    2
  • 池层数:
    2
  • 完全连接的层:
    1
  • 步幅:
    2
    像素
  • 过滤器大小:
    5
    像素
  • 测试/列车组比例:
    0.2/0.8
注意:父骨不是骨骼,它们有其原始宽度。图像是二进制的,模式值为0,背景值为1

更新 这是我负责训练的代码和一小部分图像


由于互联网连接速度慢,我无法上传足够的数据
但是,您可以绘制这些图像,以确定是否需要进一步的预处理。

这似乎太合适了。您的损失为0.01,测试集上的准确度约为82%,这一损失大于0.01(准确度99%约为损失0.04)

这是一个具体的问题。我认为:

  • 降低学习率,如1e-4
  • 添加辍学,辍学将有助于减少过度适合
  • 减小滤波器的尺寸,我认为5x5对于50x50的图片来说太大了,你可以添加更多的卷积层
  • 你的激活方法,relu是一个很好的方法,以减少过度拟合

未测试,这只是建议,顺便说一句,如果您愿意,请提供一个数据集url,我想对其进行培训。;-)

在我看来,这是一个非常具体的问题,没有看到数据就无法回答。也就是说,我想知道您是否尝试过图像增强,例如图像的移动和/或旋转。这通常会增加模型的通用性。此外,最好尝试一些降维技术,如PCA,因为您的数据会有很多非信息像素。请在MNIST数据上寻找最先进的方法,并首先复制该网络。看看它的结果,错误分类的图像等,你可能会从中得到一些提示。您可以查看许多数据集上的最新方法列表。我将尝试图像增强。在我的例子中,图案集中在一个50x50的盒子里。有趣的是,当我只使用左数字数据时,我的精确度达到了99%,因此添加更多的类会大大降低精确度。还有一个问题:我应该拉伸图案,让它们占据整个方框,还是可以保持现在的样子:图案在内部居中,带有左右边距区域(冗余的白色像素).我还想要一张快照@凯文,我喜欢你关于缩小conv尺寸的建议。除此之外,我建议您使用3x3 conv层,并在不使用maxpooling的情况下使用其中的6层。一定要在完全连接的层上使用dropout。第四级称为深度。尝试一个相当小的类数乘以2的深度。