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
读完了,有什么想法?
阅读已保存的问答示例,并循着引用回到原文。
— 本文完 — 返回文章列表