首先我講述你的問題和情況。 我想在chainer中做多標籤分類,我的班級不平衡問題非常嚴重。如何在鏈板中設置損失重量?
在這種情況下,我必須切片矢量來計算損失函數,例如,在多標籤分類中,地面真值標籤矢量大多數元素爲0,其中只有少數爲1,在這種情況下直接使用F .sigmoid_cross_entropy應用所有0/1元素可能會導致訓練不收斂,所以我決定使用[[xx,xxx,...,xxx]]切片(a是上一個FC層的chainer.Variable輸出)切片用於計算損失函數的特定元素。 在這種情況下,由於標籤不平衡可能會導致罕見的分類低分類性能,所以我想在後向傳播期間設置罕見的gt-標籤變量高損失權重,但在後面設置主標籤(在gt中發生太多變量)傳播。
我應該怎麼做?你對關於chainer的多標籤不平衡類問題培訓有何建議?
我找不到sigmoid_cross_entropy的這個特性,但是我可以在'softmax_cross_entropy'找到'class_weight',它正是你想要的。 https://docs.chainer.org/en/stable/reference/generated/chainer.functions.softmax_cross_entropy.html#chainer.functions.softmax_cross_entropy 我想你也可以參考它的實現來採用你的情況sigmoid_cross_entropy。 https://github.com/chainer/chainer/blob/v3.0.0rc1/chainer/functions/loss/softmax_cross_entropy.py#L249-L253 – corochann
據我所知,softmax_crossentropy不適合多標籤分類,因爲multi -label問題在一個圖像中有多個標籤可能是1,但是使用softmax_crossentropy這意味着只有一個標籤可能是True? – machen
如果softmax_cross_entropy不適合多標籤問題,我有另一個想法來處理它,如何使用F.tile(pred)多次複製特定元素(稀有類別預測元素),並計算BP期間的損失,罕見課程的損失可能會增強? (我不知道F.tile是否可以做到這一點?) – machen