DataScience 板


LINE

有大大說想看改變後的辨識度&code 我就貼上來吧 其實我的最終目標是辨識 0~99 的手寫數字 但是因為樣本數不足 所以目前只辨識 0~60 資料分佈如下 0 : 85 1 : 860 2 : 2231 3 : 1521 4 : 1750 5 : 1302 6 : 1511 7 : 1671 8 : 1967 9 : 2426 10 : 3000 11 : 1423 12 : 1474 13 : 1307 14 : 1189 15 : 1243 16 : 1368 17 : 1164 18 : 1129 19 : 847 20 : 790 21 : 889 22 : 694 23 : 667 24 : 693 25 : 528 26 : 369 27 : 306 28 : 222 29 : 179 30 : 194 31 : 146 32 : 192 33 : 151 34 : 101 35 : 139 36 : 100 37 : 120 38 : 83 39 : 79 40 : 107 41 : 71 42 : 76 43 : 64 44 : 66 45 : 79 46 : 101 47 : 66 48 : 59 49 : 52 50 : 75 51 : 72 52 : 91 53 : 60 54 : 90 55 : 93 56 : 48 57 : 50 58 : 64 59 : 70 60 : 54 總訓練筆數為37618筆 測試資料為 每個數字隨機挑選50筆 *數字56 因為樣本數只有48 所以只有48筆 我使用 keras + tensorflow 每張圖片的size是 48*48 為了配合MINST 強制縮小為 28*28 程式碼如下 model = Sequential() model.add(Conv2D(filters=16, kernel_size=(9,9), padding='same', input_shape=(28,28,1), activation='relu')) model.add(MaxPooling2D(pool_size=(5,5))) model.add(Conv2D(filters=32, kernel_size=(5,5), padding='same', activation='relu')) model.add(MaxPooling2D(pool_size=(2,2))) model.add(Flatten()) model.add(Dense(256, activation='relu')) model.add(Dropout(0.6)) model.add(Dense(512, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(61 ,activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) train_history = model.fit(x=x_train4d_normalize, y=y_trainonehot, validation_split=0.2, epochs=20, batch_size=300, verbose=1) model.summary() 結果如下 _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_19 (Conv2D) (None, 28, 28, 16) 1312 _________________________________________________________________ max_pooling2d_19 (MaxPooling (None, 5, 5, 16) 0 _________________________________________________________________ conv2d_20 (Conv2D) (None, 5, 5, 32) 12832 _________________________________________________________________ max_pooling2d_20 (MaxPooling (None, 2, 2, 32) 0 _________________________________________________________________ dropout_25 (Dropout) (None, 2, 2, 32) 0 _________________________________________________________________ flatten_9 (Flatten) (None, 128) 0 _________________________________________________________________ dense_25 (Dense) (None, 256) 33024 _________________________________________________________________ dropout_26 (Dropout) (None, 256) 0 _________________________________________________________________ dense_26 (Dense) (None, 512) 131584 _________________________________________________________________ dropout_27 (Dropout) (None, 512) 0 _________________________________________________________________ dense_27 (Dense) (None, 61) 31293 ================================================================= Total params: 210,045 Trainable params: 210,045 Non-trainable params: 0 打散前訓練狀況 大概在15次左右收斂 Epoch 20/20 30094/30094 [==============================] - 29s 972us/step - loss: 0.4049 - acc: 0.8804 - val_loss: 11.8239 - val_acc: 0.1683 準確度評估是 0.84186351706 打散後訓練狀況 大概10次左右就收斂 Epoch 20/20 30094/30094 [==============================] - 29s 957us/step - loss: 0.4240 - acc: 0.8767 - val_loss: 0.1844 - val_acc: 0.9490 準確度評估是 0.873031496063 光看數據是差別不大 但是實際運用結果 未打散前會整批錯 例如: 9全部認成7 之類的 打散後則是 某些圖片會認錯 但不致於整批錯了 也符合版上大大的說明 前幾批的資料對model影響很大 ※ 引述《jikker (魯蛇王)》之銘言: : 哈! : 開版後第一個技術問題就由小魯來提問吧 : 我參考書上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/m.aspx?n=bbs/deeplearning/M.1519873885.A.955.html
1F:→ jikker: 話說 evaluate 這個準確度評估 太不准了吧 03/01 11:40
2F:→ jikker: 3048個錯1476個 準確度應該是48% 評估出來居然是90%... 03/01 11:41
3F:→ aaaba: 資料要分成 train/val/test 三份,這三份的acc有各自的含義 03/01 12:03
4F:→ jikker: val的部分 我是設20% keras會自動從training的資料拿20% 03/01 12:08
5F:→ jikker: 出來當val 03/01 12:08
6F:→ aaaba: 你想知道準確度要看test acc,train acc是告訴你別的事情 03/01 12:27
7F:推 ladddddy: 請問aaab哥,假若train acc代表甚麼意思啊?是指train 03/01 15:00
8F:→ ladddddy: data 跟label永遠對不起來嗎? 03/01 15:00
9F:推 Kazimir: train acc就是這一個batch的準確率啊 我都是和train loss 03/01 15:21
10F:→ Kazimir: 一起看 有點像是訓練進程吧 如果和val差太多就有過擬和的 03/01 15:22
11F:→ Kazimir: 可能 話說你要不要嘗試把dropout關掉試試看 03/01 15:23
12F:推 ladddddy: 少打幾個字...xdd ,*假若train acc過低,ex: 3,5%,這 03/01 16:07
13F:→ ladddddy: 情況是data問題嗎 03/01 16:07
14F:→ Kazimir: 要看他的趨勢 不過當然這麼低的話要不是你的程式寫錯 03/01 16:11
15F:→ Kazimir: 要不就是label有問題 譬如說你label的順序和訓練集不一樣 03/01 16:12
16F:→ ycbrave: 不好意思請問一下,訓練集shuffle是在model.fit時 把參 03/01 17:17
17F:→ ycbrave: 數shuffle = TRUE就是了嗎? 03/01 17:17
18F:→ jikker: 天阿! 還有這麼簡單的打亂方法 我是用 03/02 09:38
19F:→ jikker: np.random.permutation(data.shape[0]) 自行打亂的 03/02 09:39
20F:推 tay2510: 可以解釋一下 "準確度評估" 是用哪些資料嗎? 03/03 18:02
21F:→ tay2510: 喔喔 看到了 "每個數字隨機挑選50筆" 03/03 18:04
22F:→ tay2510: 所以是有些數字只拿來測試? (Ex: 數字56) 03/03 18:06
23F:→ tay2510: 另外我怎麼覺得你的訓練方式怪怪的? 03/03 18:10
24F:→ tay2510: 你可以訓練 region proposal network 先偵測數字的位置 03/03 18:12
25F:→ tay2510: 再訓練classification network (一起訓練也可) 03/03 18:13
26F:→ tay2510: 就是像objection detection 那樣的做法 03/03 18:14
27F:→ tay2510: object* 03/03 18:14
28F:→ tay2510: 用你原本的訓練方式, 完全沒辦法scale啊 03/03 18:16
29F:→ tay2510: 或是跳過RPN 用傳統的OCR方法把數字先切出來再分類也行 03/03 18:24
30F:→ jikker: 感謝tay大大意見 我有空再試試看 我有考慮過OCR切單獨數字 03/05 10:22
31F:→ jikker: 但是手寫字體很容易黏再一起 EX: 2000 這4個字都一筆寫完 03/05 10:23
32F:→ jikker: 用過腐蝕+CCL 效果普通而已 現在是多蒐集資料讓訓練資料 03/05 10:25
33F:→ jikker: 更多 看會不會更準一點 03/05 10:25







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP