假設 1個影像樣本由神經網路處理後的輸出是 size 10×4 的tensor,隨機生成一個tensor,
使用Sigmoid對該tensor進行機率變換,tensor的每個數值的變換都是相互獨立的,下面得出預測的機率分佈,
我們在這裡隨機生成一個真值的機率分佈y,
自己定義一下BCELoss,需要輸入預測的機率分佈和真值的機率分佈,
手動計算一下,結果一致,
使用F.binary_cross_entropy 驗證一下,同樣需要輸入預測的機率分佈和真值的機率分佈,
再使用F.binary_cross_entropy_with_logits驗證一下,直接輸入神經網路的輸出和真值的機率分佈,
BCELoss與BCEWithLogitsLoss的關聯:BCEWithLogitsLoss = Sigmoid + BCELoss,
nn介面 Function介面
nn.BCELoss( ) F.binary_cross_entropy( )
nn.BCEWithLogitsLoss( ) F.binary_cross_entropy_with_logits( )
Enjoy it!