计算机

loss 损失函数

均方误差 MSELoss

写法 1:

mse = torch.nn.MSELoss()
l = mse(y_hat, y)

写法 2:

from torch.nn import functional as F

l = F.mse_loss(y_hat, y)

其中 y_hat 为预测值,y 为实际值,两个 Tensor 的形状需要相同。

注意,尽管一般均方误差的公式 l(\hat{y}, y) = \frac{1}{2n} ||\hat{y} - y||^2 中,\hat{y} 和 y 是对称的,但 PyTorch 中 y_hat 和 y 的位置不能交换,这与反向传播有关,该函数只会对 y_hat 进行反向传播。

交叉熵损失 CrossEntropyLoss

PyTorch 的 CrossEntropyLoss 的使用方法如下:

loss = torch.nn.CrossEntropyLoss()
l = loss(y_hat, y)

其中 y_hat 为预测值,即训练集特征 x 经过神经网络后得到的输出;y 则为真实标签。y 的形状不必和 y_hat 相同,而允许 y 是一个 [0, n) 的整数,n 为类别。计算损失时,这个数会自动转为独热码。

但是这个函数只支持批量一维类型,此时 y_hat 的形状是 B \times C,C 为类别数;y 的形状是 B,且值域是 \{0, 1, \dots, C-1\}。

BEYOND THE ARTICLE

读完了,有什么想法?

阅读已保存的问答示例,并循着引用回到原文。

查看公开问答示例
— 本文完 — 返回文章列表