以下の4つの、クロスエントロピー誤差の計算方法の違いを教えてください。
(おそらく3番目が正しいと思われるのですが)
Python
1import numpy as np 2import torch 3import torch.nn as nn 4import torch.nn.functional as F 5 6y = [[0.1, 0.2, 0.3, 0.4]] 7t = [[0, 1, 0, 0]] 8y = torch.FloatTensor(y) 9t = torch.FloatTensor(t) 10 11# 数式通り 12loss = -(t * torch.log(y) + (1-t) * torch.log((1-y))).sum(dim=1).mean() 13print(loss) 14 15# Pythonコード 16loss = -(t * torch.log(y)).sum(dim=1).mean() 17print(loss) 18 19# PyTorchのカテゴリカル交差エントロピー関数 20loss = F.cross_entropy(y, t) 21print(loss) 22 23# PyTorchの二値分類交差エントロピー 24loss = F.binary_cross_entropy(y, t) 25print(loss) 26
出力結果
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関数ー

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/17 20:09