了解PyTorch中的交叉熵损失函数
发布时间:2023-12-31 12:28:48
在PyTorch中,交叉熵损失函数(CrossEntropyLoss)是一种常用的用于分类任务的损失函数。它基于交叉熵原理,将模型预测的概率分布与真实标签的概率分布进行比较,并计算两者之间的差异。
交叉熵损失函数可以用于多分类问题,比如图像分类、文本分类等。它的计算公式如下:
loss(x, class) = -log(exp(x[class]) / (∑_j(exp(x[j]))))
其中,x 是模型的输出向量,代表不同类别的预测概率;class 是真实标签的类别。该公式实际上是将真实标签的概率分布与模型预测的概率分布之间的交叉熵进行计算。
下面是一个使用PyTorch中的交叉熵损失函数的示例:
import torch import torch.nn as nn # 设置随机种子 torch.manual_seed(0) # 创建一个模型输出 model_output = torch.tensor([[0.7, 0.2, 0.1], [0.3, 0.5, 0.2]]) # 创建真实标签 true_labels = torch.tensor([0, 1]) # 创建交叉熵损失函数实例 criterion = nn.CrossEntropyLoss() # 计算交叉熵损失 loss = criterion(model_output, true_labels) # 打印损失值 print(loss.item())
在该示例中,我们首先创建了一个模型的输出向量model_output,其中包含两个样本的预测概率。然后,我们创建了真实标签true_labels,其中包含两个样本的真实类别。
接下来,我们使用nn.CrossEntropyLoss()创建了交叉熵损失函数的实例。然后,我们使用model_output和true_labels作为输入计算交叉熵损失,并将结果存储在loss变量中。
最后,我们使用loss.item()打印出损失值。
从输出结果可以看出,该示例计算得到的交叉熵损失值为1.18593。
交叉熵损失函数是深度学习中一种常用的损失函数,可以用于训练分类模型。通过计算模型预测的概率分布与真实标签的概率分布之间的差异,交叉熵损失函数可以衡量模型的预测准确性,并引导模型优化参数以提高分类性能。
