Python 英语字母和数字识别的最佳模式
我有一个相当大的数据集(超过0.5百万张50x50张图片),总共包含62个类。图像表示英文字母和数字(全部手写)。每个班级至少有2000个样本 我一直在训练卷积神经网络,用Tensorflow识别这些图像 问题:在快速(大约200次训练迭代)接近局部最优值(损失值如0.01)后,我的分类器在测试集上的准确率停留在82%左右 问题:我如何才能获得更高的准确性?我对CNN有什么不对吗?还有,尝试SVM值得吗?我根据下面的CNN模型给出了详细信息 随机数据集条目: 问题2:除了旋转模式,我的预处理方法好吗?我是拉伸图案还是保持原样:左右边距区域有多余的白色像素 详细信息和超参数: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:除了旋转模式,我的预处理方法
- Tensorflow优化器:AdamOptimizer
- 学习率α:
0.001
- 辍学:
(无辍学)1.0
- 最小批量:
1500
- 卷积层数:
2
- 池层数:
2
- 完全连接的层:
1
- 步幅:
像素2
- 过滤器大小:
像素5
- 测试/列车组比例:
0.2/0.8
由于互联网连接速度慢,我无法上传足够的数据
但是,您可以绘制这些图像,以确定是否需要进一步的预处理。这似乎太合适了。您的损失为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的深度。