多標籤分類該選BCEWithLogitsLoss還是MultiLabelSoftMarginLoss?

時間 2021-07-01 16:28:31

1樓:天一神水

1、BCEloss是可以處理多標籤的,官方文件BCEWithLogitsLoss中描述說"In the case of multi-label classification the loss can be described as:..."

2、按照PyTorch中文件的定義來說,兩個函式是一致的,MultiLabelSoftMarginLoss就是BCEWithLogitsLoss中Losspos_weight=None的情形。

PS:兩者在做reduce的時候計算順序是略有區別的,會導致設定ruduce=False或者reduction='none'的時候輸出的shape不一致,在預設的reduce=True,reduction='mean'/'sum'下結果是一樣的。

2樓:Rhys

答主可以直接跑實驗看看效果,然後對比分析一下不同損失函式下模型所得到的輸出。多標籤場景下(尤其是類別較多時)針對單個類別很容易出現正負樣本數量極度不均衡的情況,這種情況下BCELoss的效果就會比較差。我比較推薦題主嘗試一下softmax+交叉熵推廣到多標籤分類場景下之後的損失函式,具體可以參考

將「softmax+交叉熵」推廣到多標籤分類問題

在我的實驗裡,這個損失函式的表現還是不錯的。

神經網路多標籤分類?

1.神經網路的輸入 隨機生成的資料。每次生成的資料量需要是一樣的,假設每個樣本有K個資料。2.神經網路的輸出 從幾十根天線裡選擇的幾根天線。假設總共有m根天線,某乙個樣本是要選擇其中的1,3,7根天線的話,我們就可以用乙個m個元素的向量來表示,其中第1,3,7個元素的值是1,其他的元素值都是0.3....

softmax如何作用與多標籤分類?

Jinghao Zhou 話說最近有很多任務作比如circle loss DR loss顯式或隱式地從metric learning做ranking的角度來推廣softmax函式,這種理解最早在N pair loss lifted structued loss出現為 其中第三個連等參考運用了對 和 ...

多標籤分類要用什麼損失函式?

readzw 多標籤分類輸出是乙個序列,標籤間存在共生。一種方式是採用二分類交叉熵,既每個類別都是乙個二分類,輸出是乙個類別數量長度的01序列,tensorflow可用sigmoid cross entropy 一種方法是用seq2seq解碼,把輸出做成label的標籤序列,那每一時刻都解碼輸出都是...