[問題] 關於CNN學習到的特徵問題
作業系統:(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
推
05/16 20:28,
3年前
, 1F
05/16 20:28, 1F
我曾經有訓練到可以抓到每個類別,那時只有資料數量用較少, 但是之後都train不出來一樣的結果,感覺也是要看運氣@@
→
05/16 20:39,
3年前
, 2F
05/16 20:39, 2F
→
05/16 20:52,
3年前
, 3F
05/16 20:52, 3F
→
05/17 17:26,
3年前
, 4F
05/17 17:26, 4F
→
05/17 17:26,
3年前
, 5F
05/17 17:26, 5F
→
05/17 17:26,
3年前
, 6F
05/17 17:26, 6F
→
05/17 17:26,
3年前
, 7F
05/17 17:26, 7F
→
05/17 17:28,
3年前
, 8F
05/17 17:28, 8F
※ 編輯: polie4523 (140.115.200.74 臺灣), 05/17/2021 17:33:14
→
05/18 22:59,
3年前
, 9F
05/18 22:59, 9F
我的cam做法是將經過gap後對應某類別的全連接層權重個別乘上最後的特徵圖再相加,對它的認知就是查看哪個部分對最後輸出的影響大。小弟我才疏學淺想了一個下午還是沒辦法理解f大意思@@但我可以接受不要全盤接受cam的說法,只是不知道該怎麼直觀的解釋,感覺是因為最後的特徵圖不代表整個cnn學到的特徵?
→
05/18 23:00,
3年前
, 10F
05/18 23:00, 10F
→
05/18 23:21,
3年前
, 11F
05/18 23:21, 11F
→
05/18 23:22,
3年前
, 12F
05/18 23:22, 12F
※ 編輯: polie4523 (112.78.74.199 臺灣), 05/20/2021 00:27:49
→
05/21 14:22,
3年前
, 13F
05/21 14:22, 13F
DataScience 近期熱門文章
PTT數位生活區 即時熱門文章