英文字母和数字识别的最佳模型

时间:2017-05-21 22:53:14

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

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

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

问题:在快速(大约200次训练迭代)变得非常接近局部最佳值(损失值如0.01)之后,我的分类器在测试集上的准确度大约为82%。

问题:我怎样才能获得更高的准确度? CNN有什么问题吗?还有,尝试SVM值得吗?我根据下面的CNN模型提供详细信息。

随机数据集条目: enter image description here 问题2 :除了旋转模式,我的预处理方法还不错吗?我应该伸展图案还是保持原样:左边和右边距区域带有多余的白色像素。

详细信息和超文本

  • Tensorflow优化器:AdamOptimizer
  • 学习率alpha:0.001
  • 辍学:1.0(无辍学)
  • 迷你批量大小:1500
  • 卷积层数:2
  • 合并图层数:2
  • 完全连接的图层:1
  • 步幅:2像素
  • 过滤器尺寸:5像素
  • 测试/训练集合比例:0.2/0.8

注意:Paterrns不是骷髅,它们有原始宽度。图像是二进制的,图案为0值,背景为1。

更新

以下是负责培训的代码以及图片的子集
https://drive.google.com/open?id=0B5kuwbyrKVqnTm1PMGZGMUxUNFU

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

1 个答案:

答案 0 :(得分:3)

看起来过于适合。您的损失为0.01,测试设置精度为82%左右,损失大于0.01(精度为99%,损失大约为0.04)。

这是一个具体问题。我想:

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

未经测试,这只是建议,BTW,如果你愿意,给一个数据集网址,我想训练它。 ; - )