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的標籤序列,那每一時刻都解碼輸出都是...