看板 DataScience 關於我們 聯絡資訊
作業系統:(ex:mac,win10,win8,win7,linux,etc...) Linux 問題類別:(ex:ML,SVM,RL,DL,RNN,CNN,NLP,BD,Vis,etc...) CNN 使用工具:(ex:python,Java,C++,tensorflow,keras,MATLAB,etc...) Pytorch 問題內容:s 我用pytorch的pretrained模型inception v3 訓練三個類別,每個類別資料量都是訓練108驗證27 用k=5做kfold後平均訓練accuracy有95%驗證accuracy有90%,單次最高(同一個epoch)是訓練95%驗證96% 我的問題是,當我用CAM(heatmap)檢查模型是否有學到真正的特徵時,發現他只是以不相關的地方當作特徵,我在想會造成這樣的原因是什麼。 我對cnn的理解是前面卷積層在學習特徵,而後面的全連接層把學習到的特徵分類,而對於模型來說只要參數在error surface最低的地方就會是學到的特徵,那我現在這種情況準確率很高代表全連接層的參數能夠讓error最小吧 我想讓卷積層的特徵能夠在對的位置上,如果我把全連接層數加深的話對特徵的學習是不是沒有用?因為那只是讓分類更正確而已,反而會因為參數變多而overfitting。 想請問各位板友我這樣的想法有沒有錯,實驗後是發現沒有改善@@反而準確率更低 目前唯一想到的做法就是增加資料量,或是請版友建議其他方法,謝謝! ----- Sent from JPTT on my iPhone -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 182.234.194.110 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1621098247.A.D98.html
supremexiii: 直覺是想調整filter大小,不過好像行不通 05/16 20:28
我曾經有訓練到可以抓到每個類別,那時只有資料數量用較少, 但是之後都train不出來一樣的結果,感覺也是要看運氣@@
wtchen: 調整filter大小+dropout或搭配residual connection 05/16 20:39
supremexiii: 對資料upscale或downscale不知道行不行 05/16 20:52
polie4523: 我把輸入大小從1024改為299並且增加訓練照片到各類別25 05/17 17:26
polie4523: 2張,訓練有到100趴,驗證93.8趴,看cam發現只有單一類 05/17 17:26
polie4523: 別有抓到真特徵而且該類別準確率比較高,感覺好像把沒 05/17 17:26
polie4523: 抓到的特徵的類別增加照片就行? 05/17 17:26
polie4523: 之後會試試調整filter大小,現在在學怎麼改XD 05/17 17:28
※ 編輯: polie4523 (140.115.200.74 臺灣), 05/17/2021 17:33:14
followwar: 先想想你的CAM作法真的能看出CNN做了什麼嗎? (笑) 05/18 22:59
我的cam做法是將經過gap後對應某類別的全連接層權重個別乘上最後的特徵圖再相加,對它的認知就是查看哪個部分對最後輸出的影響大。小弟我才疏學淺想了一個下午還是沒辦法理解f大意思@@但我可以接受不要全盤接受cam的說法,只是不知道該怎麼直觀的解釋,感覺是因為最後的特徵圖不代表整個cnn學到的特徵?
followwar: 不要太一廂情願的覺得CAM一定對 05/18 23:00
yoyololicon: 意見同上 然後你資料太少維度太高 05/18 23:21
yoyololicon: 先全部downsample到64x64甚至32x32再試試 05/18 23:22
※ 編輯: polie4523 (112.78.74.199 臺灣), 05/20/2021 00:27:49
followwar: 你可以參考一下 Grad-CAM Score-CAM 之類的文章 05/21 14:22