深度学习学习笔记
·
Day09
损失函数
什么是损失函数:在深度学习中,损失函数是用来衡量模型参数的质量函数,衡量的方式是比较网络输出和真实输出的差异

多分类任务损失函数
因为 多分类交叉熵损失函数的公式中 包含softmax(),所以在输出层,多分类问题中,在使用 多分类交叉熵的情况下,输出层可以不用softmax()激活函数
在多分类任务通常使用softmax将logits转换为概率的形式,所以多分类的交叉熵损失也叫做softmax损失,它的计算方式:

其中:
1、y是样本x属于某一个类别的真是概率
2、而f(x)是样本属于某一类别的预测分数
3、S是softmax激活函数,将属于某一类的预测分数转换成概率
4、L用来衡量真实值y和预测值f(x)之间差异性损失结果
"""
案例:
演示 多分类任务的交叉熵损失函数
损失函数介绍:
概述:
损失函数也叫做本函数,模板函数,代价函数,误差函数,就是用来衡量 模型好坏(模型拟合情况)
分类:
分类问题:
多分类交叉熵损失:CrossEntropyLoss
二分类交叉熵损失:BCELoss
回归问题:
MAE:Mean AbsoluteError,平均绝对误差
MSE:Mean Squared Error,均方误差
Smooth L1:结合上述两个的特点做的升级,优化
多分类交叉熵损失:CrossEntropyLoss
设计思路:
Loss=-∑ylog(S(f(x)))
简单记忆:
x: 样本
f(x): 加权求和
s(f(x)) 处理后的概率
y: 样本x属于某一个类别的 真实概率
大白话:
损失函数结果=确类别概率的对数的最小化...
细节:
CrossEntropyLoss=Softmax()+损失计算,后续如果用这个损失函数,则:输出层就不用额外调用softmax()激活函数了
"""
from importlib.metadata import requires
import torch
import torch.nn as nn
#1、定义函数,演示:多分类交叉熵损失
def dm01():
#1、手动创建样本的真实值-->上述的y
#y_true=torch.tensor([[0,1,0],[0,0,1]],dtype=torch.float)
y_true=torch.tensor([1,2])
#2、手动创建样本的预测值-->上述的f(x)
y_pred=torch.tensor([[0.1,0.8,0.1],[0.7,0.2,0.1]],requires_grad=True,dtype=torch.float)
#3、创建多分类交叉熵损失函数
criterion=nn.CrossEntropyLoss()
#4、计算损失
loss=criterion(y_pred,y_true)
print(loss)
#测试
if __name__ == '__main__':
dm01()
更多推荐

所有评论(0)