【发布时间】:2017-10-21 12:04:09
【问题描述】:
我有一个相当大的数据集(超过 50 万张 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。
更新
这是我负责训练的代码和一小部分图像子集:
https://drive.google.com/open?id=0B5kuwbyrKVqnTm1PMGZGMUxUNFU
由于我的互联网连接速度较慢,我无法上传足够的数据。
但是,您可以绘制这些图像以确定是否需要进一步预处理。
【问题讨论】:
-
在我看来,这是一个非常具体的问题,没有看到数据就无法回答。也就是说,我想知道您是否尝试过图像增强,例如移动和/或旋转图像。这通常会增加模型的通用性。此外,尝试一些降维技术(例如 PCA)可能会很好,因为您的数据会包含大量无信息像素。
-
在 MNIST 数据上寻找最先进的方法并首先复制该网络。查看它的结果、错误分类的图像等。您可能会从中得到一些提示。您可以查看here,了解许多数据集上的最新方法列表。
-
我会尝试图像增强。在我的例子中,模式集中在一个 50x50 的盒子里。非常有趣的是,当我只留下数字数据时,我得到了高达 99% 的准确率,因此添加更多类会降低准确率。
标签: python machine-learning tensorflow neural-network conv-neural-network