在机器学习和深度学习中,交叉熵损失(Cross-Entropy Loss)和二元交叉熵损失(Binary Cross-Entropy Loss)是两种常用的损失函数,它们在分类任务中发挥着重要作用。本文将详细介绍这两种损失函数的区别和联系,并通过具体的代码示例来说明它们的实现细节。
交叉熵损失(Cross-Entropy Loss)常用于多类分类问题,即每个样本只能属于一个类别,但总类别数量较多。例如,在手写数字识别中,一个图片只能代表一个数字(0-9)。
在 PyTorch 中,你可以使用 torch.nn.CrossEntropyLoss
作为多类分类的交叉熵损失函数。这个损失函数结合了 Softmax
层和交叉熵损失,可以更稳定地处理数值问题。我们使用MNIST数据集作为示例,这是一组手写数字(0-9)的图片,每个图片属于一个类别,代码如下。
import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
from torch.utils.data import DataLoader
# 设置超参数
batch_size