作者jikker (鲁蛇王)
看板deeplearning
标题[问题] 手写数字辨识问题
时间Tue Feb 27 12:25:13 2018
哈!
开版後第一个技术问题就由小鲁来提问吧
我参考书上MNIST+CNN的范例
建立了以下架构
卷积层1 28*28 16层
池化层1 14*14 16层
卷积层2 14*14 36层
池化层2 7*7 36层
平坦层 1764 神经元
隐藏层 128 神经元
输出层 10 神经元
完美达成了 99.5% 的辨识率
可是当训练资料换成 我自己的资料时
辨识率就只有80%左右 而且这80% 是因为完全不认得 数字8跟9
所有数字8跟9的全部认错 所以只有80%
放大神经元数或卷积、池化层数目也得到类似的结果
是因为我的训练资料不足的关系吗?
我看MNIST是各数字都有6000多笔
我的资料分布如下
0 : 85
1 : 860
2 : 2231
3 : 1521
4 : 1750
5 : 1302
6 : 1511
7 : 1671
8 : 1967
9 : 2426
光看资料 感觉比较认不出来的应该是 0 或1 阿
另外为了弥补 资料量的差异 我有改变训练资料
每个数字各取800个 出来训练 (0太少 只能完整训练)
再把每个数字随机抽出50个出来验证
9还是每个都认错...
请问我的方向该怎麽修正呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 219.87.162.162
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/deeplearning/M.1519705516.A.4F3.html
1F:→ GTX9487: 你的99.5%的辨识率是Training 还是 Test? 02/27 12:28
2F:→ jikker: training 99.5 test 98.9 02/27 12:34
3F:→ h821231: 参数跟初始都有可能造成差异吧 02/27 12:54
4F:→ followwar: MNIST pretrain後 在你的dataset上finetune 02/27 12:56
5F:→ patrick2dot0: 把8跟9的data抓出来train看看? 02/27 12:56
6F:→ patrick2dot0: 分成8,9,others 看分不分的出来 02/27 12:57
7F:→ GTX9487: 4楼的意思是 MNIST 训练完的参数为初始参数 02/27 12:59
8F:→ patrick2dot0: 噢 我知道 我的回文不是针对四楼 02/27 13:05
9F:→ GTX9487: 我只是帮4F解释清楚 别紧张 哈哈 02/27 13:10
10F:→ aaaba: 先把诊断资料整理出来吧,例如:confusion maxtrix 02/27 13:23
12F:→ aaaba: 如果你自己的8、9没有特别怪异,你也可以用mnist训练出来的 02/27 13:25
13F:→ aaaba: 那个分类器跑一遍你自创的那批资料,看看结果如何 02/27 13:25
14F:→ brian980466: MNIST test不到99其实不强 02/27 13:27
15F:推 pinky750619: 你的手写资料图片有跟他原本数据库的格式一样吗?印 02/27 14:06
16F:→ pinky750619: 象中,例如图片大小相同?图片颜色是否二值化且手写 02/27 14:06
17F:→ pinky750619: 白色背景黑色? 02/27 14:06
18F:→ jikker: 文字黑色 背景白色 这点相同 但我的资料大小是58*48 02/27 15:35
19F:→ jikker: 有把它缩为28*28 02/27 15:35
20F:→ jikker: 有空再把我的资料open出来 02/27 15:35
21F:→ jikker: 我的资料是真实资料 所以有10几个人的不同笔迹 02/27 15:38
22F:推 GTX9487: 那很有可能就是前处理的问题了 02/27 15:39
23F:推 cc9i: 看要不要把code贴上来 80% train accurate是有收敛吗? 02/27 16:44
24F:→ cc9i: 你训练时train data有shuffle吗? 还是说以label顺序下去跑 02/27 16:48
25F:→ jikker: 有收敛 资料是照顺序下去跑的耶 @@ 02/27 16:49
26F:→ circus: Overfitting? 02/27 17:06
27F:→ jikker: 天阿!!!! 真的是训练资料要打散的问题 感谢各位大大 02/27 17:12
28F:推 seasa2016: 想请问 为什麽shuffle会影响结果呢? 02/27 17:28
29F:→ jikker: 资料是一批一批跑的 一次执行都算1 下一次执行都算2 02/27 18:05
30F:→ jikker: 每次fitting完 下一次近来的资料都完全不同 效果自然差 02/27 18:05
31F:→ GTX9487: 原来不是前处理的问题!?@@ 02/27 18:27
32F:推 sore: 你的训练资料不平衡 02/27 18:49
33F:→ brian980466: 前几个 batch 看到的东西对 model 影响比较大 02/27 19:39
34F:→ gus2: 好奇你shuffle後辨识率多少 02/27 20:24
35F:推 galapous: 每个batch training label 都很相近的话 02/27 20:49
36F:→ galapous: minibatch的意义就没了,gradient很容易冲过头overfitti 02/27 20:49
37F:→ galapous: ng 02/27 20:49
38F:推 cc9i: 原po把改完的结果回报一下啦 顺便问问你optimizer用哪个 02/27 21:11
39F:推 GTX9487: 推推 好文章推起来 02/27 23:26
40F:推 chris810314: 这不就是minibatch的概念吗?如果你的minibatch没有 02/27 23:54
41F:→ chris810314: 足够独立的样本,那可能就会学到原本不该学的东西! 02/27 23:54
42F:推 huaishuo: 弱弱问一下 model的正确率是要看training的还是validati 02/28 14:21
43F:→ huaishuo: on的,还是是看val_acc最高的那个epoch的acc呢? 02/28 14:21
44F:推 ljn3333: val 02/28 17:55
45F:推 Kazimir: 我觉得很有可能是前几个batch把NN玩坏了 所以最後到89的 03/01 01:37
46F:→ Kazimir: 的时候已经失去学习能力 03/01 01:37