第一种使用方法
import torch
from torch import nn # Example of target with class indices
loss = nn.CrossEntropyLoss()
input = torch.randn(3, 5, requires_grad=True)
target = torch.empty(3, dtype=torch.long).random_(5)
output = loss(input, target)
output.backward()
第二种使用方法
# Example of target with class probabilities
input = torch.randn(3, 5, requires_grad=True)
target = torch.randn(3, 5).softmax(dim=1)
output = loss(input, target)
output.backward()
自己的理解:
传进去的是(3,5)维度的数据,其中3可以代表有3个图片(数据),5代表有5中类别(0,1,2,3,4这几类)。
[ 0.1087, -0.4276, 0.9313, -1.0140, 2.1229]表示预测的是
····第一个图是第一类的概率是 0.1087
·····第一个图是第一类的概率是 -0.4276(负数无所谓,举的例子是随机的嘛)
。。。
target的形状就是[3],代表有三个目标真实值。其中[3,4,2]代表对应上面那个input的
----第一行的第3个值
----第二行的第4个值
----第3行的第2个值
这三个值就是真实值,表示是这些真实值的概率
交叉熵目的:
是预测值的概率更加接近真实值,让那些真实值对于的概率的类别更加大
就是让这些红色的值变大。具体是怎么变的可以查阅相关的资料