看板 DataScience 關於我們 聯絡資訊
ctrl + y 可以刪除一整行,請將不需要的內容刪除 文章分類提示: - 問題: 當你想要問問題時,請使用這個類別。 - 討論: 當你自己已經有答案,但是也想聽聽版友意見時。 - 情報: 當你看到消息時,請使用這個類別。 根據板規規定,做適當的轉換,以及摘錄重要文意。 - 心得: 當你自己想要分享經驗時,請使用這個類別。 (回答並非義務,所以當有人回答時,哪怕句謝謝也好,多多回應,大E可編輯文章) 可以試著把程式碼用網站貼出來唷 https://pastebin.com/ (如果用不到以下框架,如觀念問題請自行視情況刪除作業系統,使用工具等項目) 作業系統:(ex:mac,win10,win8,win7,linux,etc...) win10 問題類別:(ex:ML,SVM,RL,DL,RNN,CNN,NLP,BD,Vis,etc...) CNN 使用工具:(ex:python,Java,C++,tensorflow,keras,MATLAB,etc...) Python 問題內容: 目前的研究是要辨認時頻圖 目標是要分類出兩種類別 現在選擇使用的架構是EfficientNet B3 搭配transfer learning做訓練 時頻圖輸入時有做標準化 訓練資料有28000 Train跟Validation的比例為0.8、0.2 在fit的過程train很快就收斂了 在Validation的部分完全沒辦法收斂 所以合理懷疑時overfitting 目前想不到合適的解決辦法 雖然最後測試的準確度有86% 但是感覺完全是矇到的 想請問板上的前輩有什麼建議? https://i.imgur.com/i1lRjCv.jpg
https://i.imgur.com/ZPaYBx4.jpg
https://i.imgur.com/UrHO7R5.jpg
https://i.imgur.com/BkKPy7Z.jpg
https://i.imgur.com/YI6kNUV.jpg
https://i.imgur.com/8RWVVuw.jpg
https://i.imgur.com/KLoA3MG.jpghttps:// i.imgur.com/A30vu0q.jpg https://i.imgur.com/QuebHiL.jpg
----- Sent from JPTT on my iPhone -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.133.251 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1666789658.A.ABC.html
thefggeuck: 補上accuracy 10/26 21:08
thefggeuck: https://i.imgur.com/LdUYSDP.jpg 10/26 21:08
thefggeuck: 麻煩各位前輩給我一些指點 10/26 21:38
chang1248w: efficient net原本train在哪裡? 10/26 22:00
chang1248w: 你原本的toy model有這樣的問題嗎 10/26 22:07
chang1248w: 另外testing在什麼樣的集合上做? 10/26 22:09
chang1248w: 好奇問個,時頻圖怎麼會有rgb 10/26 22:12
thefggeuck: Train是用模擬的方式做試題邊界不反射的訊號 10/26 22:15
thefggeuck: ,再加上不反射邊界不反射訊號加上雜訊。 10/26 22:15
thefggeuck: Test是用模擬實驗訊號,邊界有反射的訊號。 10/26 22:15
thefggeuck: 時頻圖的顏色我是用Matlab處理使用的colormap是用jet 10/26 22:16
thefggeuck: 補充一下,原本有使用過vgg16的模型做訓練,但是測試 10/26 22:18
thefggeuck: 結果最好的是EfficientNet B3 10/26 22:18
chang1248w: 最下面留一層hidden layer就好,然後試試看第一個。 10/26 22:33
chang1248w: epoch之後unfreeze整個模型 10/26 22:33
thefggeuck: 樓上的前輩指的第一個是什麼意思? 10/26 22:37
chang1248w: 第一個epoch 10/26 23:04
thefggeuck: 請問能給我更具體的操作說明嗎? 10/27 11:01
thefggeuck: 我算是這方面的新手 10/27 11:01
thefggeuck: 謝謝 10/27 11:01
chang1248w: 我懷疑你的domain和imagenet 差太大,導致模型解出來 10/27 11:39
chang1248w: 的特徵多半和預測沒什麼關係,再疊上dropout造成模型 10/27 11:39
chang1248w: 在決策時沒有穩定的共識 10/27 11:39
chang1248w: 另外dropout不建議和batch normalization 連在一起使 10/27 11:42
chang1248w: 用 10/27 11:42
chang1248w: https://arxiv.org/abs/1801.05134 10/27 11:43
chang1248w: 你可以先試試看把dropout拿掉,或者把mlp調整成 10/27 11:45
chang1248w: dense-bn-relu+dropout 10/27 11:45
chang1248w: 沒幫助再試整個模型上的fine-tuning 10/27 11:47
chang1248w: 具體步驟是你現在的方法只train一個epoch,儲存整個 10/27 11:50
chang1248w: 模型的參數,把整個模型都設成trainable,再complie 10/27 11:50
chang1248w: 模型一次,載入剛剛訓練過一個epoch的參數,繼續trai 10/27 11:50
chang1248w: n 10/27 11:50
chang1248w: 你可以在.fit之前呼叫. summary 來約略的檢查模型的 10/27 11:52
chang1248w: 參數有沒有成功切換至trainable 10/27 11:52
chang1248w: 最後,一般在fine-tuning的時候會加上L2 regularizer 10/27 11:55
chang1248w: 但是這東西遇上adam之類含有動量項的算法時,行為和 10/27 11:55
chang1248w: 理論上應該給予的懲罰有所落差,因此有了adamW和sgdW 10/27 11:55
chang1248w: 之類的更正版 10/27 11:55
chang1248w: 你可以在tensorflow的擴充包,tensorflow-addons找到 10/27 11:56
chang1248w: 它們 10/27 11:56
chang1248w: validation抖的這麼厲害已經超出overfitting的範疇了 10/27 12:01
chang1248w: 數量級差太多 10/27 12:01
thefggeuck: 非常感謝前輩 我先嘗試看看 10/27 12:12
chang1248w: 能有幾分作用我是不知道啦lol 10/27 12:36
wuyiulin: 朝聖很會抖的 val 10/27 14:10
thefggeuck: 這是改成dense-bn-relu-dropout的結果 10/27 17:24
thefggeuck: Predict準確率72% 10/27 17:24
thefggeuck: https://i.imgur.com/mGw02AX.jpg 10/27 17:24
thefggeuck: https://i.imgur.com/XMfMiVJ.jpg 10/27 17:24
chang1248w: 這看起來就是平常會看到的overfitting 10/27 19:01
thefggeuck: 已經有照著前輩的方式操作了,先把trainable 關掉,訓 10/28 01:37
thefggeuck: 練一個epoch,再把模型變成可訓練,接著上一個epoch的 10/28 01:37
thefggeuck: 權重繼續訓練,但是出來的結果val 也是亂跳… 10/28 01:37
chang1248w: 是像最上面那種潑漆似的灑脫,還是前幾樓這種5%左右 10/28 03:26
chang1248w: 的震盪? 10/28 03:26
thefggeuck: 像一開始的那種潑漆式 10/28 08:58
thefggeuck: 如果不使用遷移式學習,把所有的參數都打開,訓練1000 10/28 08:59
thefggeuck: 個epoch看看,效果會不會比較好? 10/28 08:59
chang1248w: 我沒想法,這要試了才知道 10/28 12:13
chang1248w: 等等,你網路的最後一層怎麼是sigmoid 10/28 12:16
chang1248w: sigmoid是給非零即一的binary classification 用的, 10/28 12:20
chang1248w: 接在Binary cross entropy (BCE)後面,一般ce的形式 10/28 12:20
chang1248w: 要用softmax當輸出 10/28 12:20
thefggeuck: 是的,最終需要的答案就是只有兩個,不是0就是1 10/28 13:41
chang1248w: 用sigmoid有可能會輸出[1, 1],這是你要的? 10/28 14:44
thefggeuck: 我要的答案是0或1 ,二分類 10/28 14:54
chang1248w: 那最後一層的activation 就得用softmax 10/28 14:59
chang1248w: 不然就只輸出一個用sigmoid的node,然後loss用BCE 10/28 15:00
thefggeuck: 那compile要用categorical cross entropy 嗎?如果我 10/28 15:03
thefggeuck: 選擇用softmax 的話 10/28 15:03
chang1248w: 要 10/28 15:14
thefggeuck: 好的,謝謝,我現在嘗試 10/28 15:17
j840715: 你的試體很薄嗎 有沒有機會只拿暫態的時間段 不要被回波 11/03 07:57
j840715: 干擾呢ˉ? 11/03 07:57
chang1248w: 有沒有回波對應該沒什麼差,可以有回波和沒有回波的 11/03 20:42
chang1248w: 資料打散在一起,再切訓練/測驗集 11/03 20:42
thefggeuck: 剛剛跟教授報告,他覺得是資料量不平均,0的部分9000 11/04 10:54
thefggeuck: 筆、1的部分有19000筆,有可能是沒有真正隨機切分出來 11/04 10:54
thefggeuck: ,不知道這種原因是有可能的嗎? 11/04 10:54
thefggeuck: 試題厚度20公分,我是用有拿波會反射的訊號當data,應 11/04 10:56
thefggeuck: 該是不會影響。 11/04 10:56
wuyiulin: 資料量不平均的問題用 Focal Loss 的 Alpha vector 11/06 01:54
wuyiulin: 處理。 11/06 01:54
wuyiulin: 簡單來說就是去修一下 CE 11/06 01:54
chang1248w: 怎麼我讀到的focal loss是對樣本難易度做調整 11/06 09:44
wuyiulin: 你那個是 gamma , 前面那個 alpha 可以處理 data imba 11/06 14:55
wuyiulin: lance 。 11/06 14:55
chang1248w: 喔,那個不算focal loss 提出的吧,年初還有一篇後續 11/06 21:52
chang1248w: 的polyloss 11/06 21:52
j840715: 聽起來好像是暫態的彈性波啊 11/07 09:49
j840715: 如果訓練只給他看用有限元素法模擬無邊界的 得到時頻圖就 11/07 09:49
j840715: 是沒反射 11/07 09:49
j840715: 測試的資料集如果都是有反射影響 那疊合就會因為距離邊 11/07 09:49
j840715: 界不同而不同 所以時間域特徵會直接變成雜訊 11/07 09:49
j840715: 雜訊還要考慮是否在資料集中的期望值是0 11/07 09:49
j840715: 如果硬要說有沒有反射會一樣 那不如就用fft 不用時頻圖了 11/07 09:49
j840715: 所以感覺可以從切資料集品均一點這點著手 跟樓上大大說 11/07 09:57
j840715: 的一樣 打散處理 11/07 09:57
thefggeuck: 我已經有把訓練資料打散了,但是還沒有解決問題。我想 11/10 12:52
thefggeuck: 是訓練資料不平均造成的。 11/10 12:52