1. ホーム
  2. Pytorch

PytorchのBCELoss、BCEWithLogitsLoss、CrossEntropyLossの違いについて

2022-02-26 17:06:30
<パス
BCEWithLogitsLoss = Sigmoid+BCELoss ネットワークの最後の層が nn.Sigmoid を使用する場合、BCEWithLogitsLoss はネットワークの最後の層が nn.Sigmoid を使用しない場合に使用します。
(BCELoss)BCEWithLogitsLoss は、シングルラベルのバイナリ分類またはマルチラベルのバイナリ分類に用いられ、出力とターゲットの次元は (batch,C) で、batch はサンプル数、Cはカテゴリ数、各バッチのCの各値は、0から1までのシグモイドなので 各C値は、ラベルのクラスに所属する確率を表わします。シングルラベルの2値分類であれば、出力と目標次元は(batch,1)となります。
CrossEntropyLossは、複数カテゴリの分類に使用され、出力とターゲットの次元は(バッチ、C)、バッチはサンプル数、Cはカテゴリの数、各Cは、各バッチの各C値に対して、一緒に各Cのソフトマックスを見つけるために、相互に排他的に関連し、だから各バッチのすべてのC値の合計は1です、どの値が大きく、それはどのクラスに属していることを表します。2値分類に用いる場合、出力とターゲットの次元は(batch,2)となる。