我使用完全卷積神經網絡(鏈接到紙)做圖像分割:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn.pdfTensorflow:加權稀疏SOFTMAX與交叉熵損失
這可以被認爲是像素分類(用於最終的每個像素獲得一個標籤)
我正在使用tf.nn.sparse_softmax_cross_entropy_with_logits丟失函數。
loss = tf.reduce_mean((tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits,
labels=tf.squeeze(annotation, squeeze_dims=[3]),
name="entropy")))
一切都很順利。然而,我看到在絕大多數像素(95%以上)中出現了一類,稱爲這個類別0.假設我們有另外三個類別,1,2和3.
什麼是最簡單的方法把重量放在類上?從本質上講,我想相比於其他三類誰應該有正常體重1
我知道這個功能的存在是爲了對0類(如0.1),重量很輕:https://www.tensorflow.org/api_docs/python/tf/losses/sparse_softmax_cross_entropy
它只是看起來我認爲它做了完全不同的事情,我不明白權重應該如何與標籤具有相同的級別。我的意思是,在我的情況下,權重應該像Tensor([0.1,1,1,1])形狀(4,)和等級1,而標籤具有形狀(batch_size,width,height)和等級3。我錯過了什麼嗎?
上PyTorch等效將是
torch.nn.CrossEntropyLoss(weight=None, size_average=True, ignore_index=-100)
其中權重是炬張量[0.1,1,1,1]
謝謝!
我認爲它主要是在[這個問題](https://stackoverflow.com/questions/44560549/unbalanced-data-and-weighted-cross-entropy/44563055),只是用交叉熵替換稀疏交叉熵。 – user1735003