簡體   English   中英

Class 權重惡化了我的 keras 分類 model

[英]Class weights worsen my keras classification model

我有一個 model 用於對一些數據進行分類,它的目標 output 為 21。它使用亞當優化器和分類交叉熵損失。 為了改善 model 損失,我對數據集中的 class 頻率進行了可視化,發現前 2 個類別的頻率約為 25,000 和 20,000,而最低的 2 個類別約為 4、40。范圍從 100 到 2000。我意識到這是值的明顯差異,並嘗試添加我使用 sklearn 提取的類內權重,如下所示:

我的 y 數組采用 one-hot 編碼樣式,例如:

class1,   class2, class3, class4 ... class21
   0        0       1       0    ...    0 
   1        0       0       0    ...    0
   0        1       0       0    ...    0
from sklearn.utils.class_weight import compute_class_weight

y_int = np.argmax(y.to_numpy(), axis=1)
weights = compute_class_weight('balanced', classes=np.unique(y_int), y=y_int)
di = dict(enumerate(class_weights))

但是我的損失惡化了,到第 50 個時期,我開始獲得 30 - 50 范圍內的損失值。 與沒有 class 權重的情況相比,我得到了大約 0.4,這太可怕了。

我提取 class 權重的方式有問題嗎? 還是我不應該完全使用 class 權重? 如果不是,我應該用什么來解釋這種巨大的不平衡? -謝謝

Keras 打印訓練期間的加權損失; 您可以通過例如將所有 class 權重加倍來確認這一點。 因此,加權 model 的較大損失可能只是表明較小的類別更難分類,現在您將損失的注意力集中在那些您看到分數更差的較小類別上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM