以下の4つの、クロスエントロピー誤差の計算方法の違いを教えてください。
(おそらく3番目が正しいと思われるのですが)
Python
import numpy as np import torch import torch.nn as nn import torch.nn.functional as F y = [[0.1, 0.2, 0.3, 0.4]] t = [[0, 1, 0, 0]] y = torch.FloatTensor(y) t = torch.FloatTensor(t) # 数式通り loss = -(t * torch.log(y) + (1-t) * torch.log((1-y))).sum(dim=1).mean() print(loss) # Pythonコード loss = -(t * torch.log(y)).sum(dim=1).mean() print(loss) # PyTorchのカテゴリカル交差エントロピー関数 loss = F.cross_entropy(y, t) print(loss) # PyTorchの二値分類交差エントロピー loss = F.binary_cross_entropy(y, t) print(loss)
出力結果
tensor(2.5823) # -(t * log(y) + (1-t) * log((1-y))
tensor(1.6094) # -(t * log(y))
tensor(1.4425) # cross_entropy関数
tensor(0.6456) # binary_cross_entropy関数ー
まだ回答がついていません
会員登録して回答してみよう