Pytorch の交差エントロピー誤差の使い方を教えてください。
例えば、
予測値が [[0.0, 1.0, 0.0], [0.0, 0.0, 1.0]]
教師データのインデックスが [1, 2]の場合、誤差は0になると思いますが、結果は以下の通りです。
Python
1import torch 2 3y = [[0.0, 1.0, 0.0], [0.0, 0.0, 1.0]] 4t = [1, 2] 5y = torch.FloatTensor(y) 6t = torch.tensor(t) 7loss = torch.nn.CrossEntropyLoss() 8loss(y, t) 9 10# 出力結果 11# tensor(0.5514)
また、
予測値が、[[0.2, 0.3, 0.5], [0.1, 0.4, 0.5]]
教師データ[[0.1, 0.2, 0.7], [0.0, 0.4, 0.6]]
のような確率分布での学習の場合でも。 -t*log(y) でよいのでしょうか?
Python
1import torch 2# -t*log(y) 3 4y = [[0.2, 0.3, 0.5], [0.1, 0.4, 0.5]] 5t = [[0.1, 0.2, 0.7], [0.0, 0.4, 0.6]] 6y = torch.FloatTensor(y) 7t = torch.FloatTensor(t) 8(-t * torch.log(y)).mean() 9# 出力結果 10# tensor(0.2782) 11 12y = [[0.2, 0.3, 0.5], [0.1, 0.4, 0.5]] # 教師データと同じ値 13t = [[0.2, 0.3, 0.5], [0.1, 0.4, 0.5]] 14y = torch.FloatTensor(y) 15t = torch.FloatTensor(t) 16(-t * torch.log(y)).mean() 17# 出力結果 18# tensor(0.3288)
回答1件
あなたの回答
tips
プレビュー