损失函数介绍

用softmax,就可以将一个输出值转换到概率取值的一个范围。

交叉熵损失CrossEntropyLoss

第一个参数weight, 各类别的loss设置权值, 如果类别不均衡的时候这个参数很有必要了,加了之后损失函数变成这样:

第二个参数ignore_index, 这个是表示某个类别不去计算loss。

第三个参数reduction, 计算模式,可为none/sum/mean, none表示逐个元素计算,这样有多少个样本就会返回多少个loss。 sum表示所有元素的loss求和,返回标量, mean所有元素的loss求加权平均(加权平均的含义下面会提到),返回标量。

python 复制代码
# fake data
inputs = torch.tensor([[1, 2], [1, 3], [1, 3]], dtype=torch.float)  # 这里就是模型预测的输出, 这里是两个类,可以看到模型输出是数值,我们得softmax一下转成分布
target = torch.tensor([0, 1, 1], dtype=torch.long)  # 这里的类型必须是long, 两个类0和1

# 三种模式的损失函数
loss_f_none = nn.CrossEntropyLoss(weight=None, reduction='none')
loss_f_sum = nn.CrossEntropyLoss(weight=None, reduction='sum')
loss_f_mean = nn.CrossEntropyLoss(weight=None, reduction='mean')

# forward
loss_none = loss_f_none(inputs, target)
loss_sum = loss_f_sum(inputs, target)
loss_mean = loss_f_mean(inputs, target)

# view
print("Cross Entropy Loss:\n ", loss_none, loss_sum, loss_mean)

## 结果:
Cross Entropy Loss:
  tensor([1.3133, 0.1269, 0.1269]) tensor(1.5671) tensor(0.5224)

这里还要注意一下这里的target, 这个是每个样本给出属于哪一个类即可,类型是torch.long, 为什么要强调这个,我们下面会学习二分类交叉熵损失,是交叉熵损失函数的特例,那里的target更要注意,对比起来更容易理解

nn.BCELoss

这个是交叉熵损失函数的特例,二分类交叉熵。注意:输入值取值在[0,1]

nn.MSE

这个也是用于回归问题,计算inputs与target之差的平方

损失函数介绍

相关推荐
自律小浮2 小时前
GA3C(GPU/CPU混合式异步优势Actor-Critic)算法实现控制倒立摆
pytorch·python·深度学习·机器学习
瑆玥琼5 小时前
机器学习流量识别(pytorch+NSL-KDD+多分类建模)
pytorch·机器学习·分类·语音识别
点云SLAM1 天前
PyTorch 中Tensor常用数据结构(int, list, numpy array等)互相转换和实战示例
数据结构·人工智能·pytorch·算法·list·numpy·tensor
点云SLAM2 天前
Pytorch中gather()函数详解和实战示例
人工智能·pytorch·python·深度学习·机器学习·计算视觉·gather函数
IT Panda2 天前
[分布式并行策略] 数据并行 DP/DDP/FSDP/ZeRO
pytorch·分布式训练·dp·deepspeed·ddp·fsdp·zero
我爱音乐yyy2 天前
pythonday50
pytorch·python·深度学习
大模型铲屎官2 天前
【深度学习-Day 29】PyTorch模型持久化指南:从保存到部署的第一步
人工智能·pytorch·python·深度学习·机器学习·大模型·llm
一点.点2 天前
李沐动手深度学习(pycharm中运行笔记)——11.模型选择+过拟合欠拟合
pytorch·深度学习
苏苏susuus3 天前
深度学习:张量标量概念、PyTorch张量创建、类型转换等
人工智能·pytorch·深度学习
啊哈哈哈哈哈啊哈哈3 天前
G2打卡——人脸图像生成
pytorch·学习·gan