pytorch——损失函数

Loss用来做两件事,一是计算实际输出和目标之间的差距,二是为我们反向传播更新数据提供一个依据。首先查看L1Loss函数官方文档:

pytorch——损失函数_第1张图片

pytorch——损失函数_第2张图片

有两种方式,一个默认的mean,求的是平均值,另一个sum,求的是和:

import torch
from torch.nn import L1Loss

input = torch.tensor([1, 2, 3], dtype=torch.float32)
target = torch.tensor([1, 2, 5], dtype=torch.float32)

input = torch.reshape(input, (1, 1, 1, 3))#模拟实际情况,batch_size为1,通道为1,行为1,列为3
target = torch.reshape(target, (1, 1, 1, 3))

loss = L1Loss()
result = loss(input, target)

print(result)

输出:

tensor(0.6667)#默认是平均值 

还有常用的就是平方差loss(MSEloss):

pytorch——损失函数_第3张图片

loss_mse = MSELoss(reduction='sum')
result_mse = loss_mse(input, target)
print(result_mse)

输出为:

tensor(4.)

交叉熵CrossEntropyLoss,主要用来分类问题:

pytorch——损失函数_第4张图片

 C为几个类别

假若有人(label=0)、狗(label=1)、猫(label=2),有一张狗的图片,经过神经网络的处理后得到的输出:[0.1  0.2  0.3](分别为三种类别的概率) 而target=1(就是应该得到的结果为狗)

根据公式得loss(x,class) = -0.2+log(exp(0.1)+exp(0.2)+exp(0.3))

x = torch.tensor([0.1, 0.2, 0.3])
y = torch.tensor([1])
x = torch.reshape(x, (1, 3))#N为1,3个种类
loss_cross = CrossEntropyLoss()
print(loss_cross(x, y))

输出为:

tensor(1.1019)

你可能感兴趣的:(神经网络,机器学习,Python,pytorch,人工智能,python)