pytorch——损失函数

23 篇文章 4 订阅
14 篇文章 1 订阅

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

有两种方式,一个默认的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):

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

输出为:

tensor(4.)

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

 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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值