本文來自知乎問題 關於在CNN中文本預測sigmoid分類器訓練準確率的問題?中筆者的做答,來做爲Keras中多標籤分類器的使用解析教程。app
關於在CNN中文本預測sigmoid分類器訓練準確率的問題?
對於文本多標籤多分類問題,目標標籤形如[ 0 0 1 0 0 1 0 1 0 1 ]。在CNN中,sigmoid分類器訓練、測試的準確率的判斷標準是預測準確其中一個標籤即爲預測準確仍是怎樣。如何使sigmoid分類器的準確率的判斷標準爲所有預測準確即爲預測準確。有什麼解決方案?測試
問題中提出的解決多標籤多分類問題的解決方法是正確的。可是要注意幾點,keras裏面使用這種方式的acc是二進制acc,會把多標籤當作單標籤計算。spa
什麼意思呢?舉個例子,輸入一個樣本訓練,共有十個標籤,其中有兩個爲1,而你預測結果爲所有是0,這時你獲得準確率爲0.8。最後輸出的ac是全部樣本的平均。能夠看出這個準確率是不可信的。.net
解決方法以下:重寫acc評價指標,筆者本身寫了一個多標籤分類的acc,一個樣本里,只有所有標籤都對應上才acc爲1,有一個不對就爲0。3d
acc是keras輸出acc,my_acc是多標籤acc,由於使用了數據加強,valacc更高。blog
因爲每一個label的比例不一樣,又測試不一樣權重重寫loss來對比。發現經過調整合適權重能夠,相同參數下能夠達到更優效果。教程
設置合適的權重值,val_acc上升了,val多標籤acc也達到了更高。element