1. 程式人生 > >[知乎作答]·關於在Keras中多標籤分類器訓練準確率問題

[知乎作答]·關於在Keras中多標籤分類器訓練準確率問題

[知乎作答]·關於在Keras中多標籤分類器訓練準確率問題

本文來自知乎問題 關於在CNN中文字預測sigmoid分類器訓練準確率的問題?中筆者的作答,來作為Keras中多標籤分類器的使用解析教程。

 

一、問題描述

關於在CNN中文字預測sigmoid分類器訓練準確率的問題?

對於文字多標籤多分類問題,目標標籤形如[ 0 0 1 0 0 1 0 1 0 1 ]。在CNN中,sigmoid分類器訓練、測試的準確率的判斷標準是預測準確其中一個標籤即為預測準確還是怎樣。如何使sigmoid分類器的準確率的判斷標準為全部預測準確即為預測準確。有什麼解決方案?

 

二、問題回覆

 

問題中提出的解決多標籤多分類問題的解決方法是正確的。但是要注意幾點,keras裡面使用這種方式的acc是二進位制acc,會把多標籤當做單標籤計算。

什麼意思呢?舉個例子,輸入一個樣本訓練,共有十個標籤,其中有兩個為1,而你預測結果為全部是0,這時你得到準確率為0.8。最後輸出的ac是所有樣本的平均。可以看出這個準確率是不可信的。

解決方法如下:重寫acc評價指標,筆者自己寫了一個多標籤分類的acc,一個樣本里,只有全部標籤都對應上才acc為1,有一個不對就為0。

acc是keras輸出acc,my_acc是多標籤acc,因為使用了資料增強,valacc更高。

 

由於每個label的比例不同,又測試不同權重重寫loss來對比。發現通過調整合適權重可以,相同引數下可以達到更優效果。

 

設定合適的權重值,val_acc上升了,val多標籤acc也達到了更高。

關於如何設定合適權重,筆者還在實驗中,可以關注下筆者的知乎和部落格。後面實驗結果會及時更