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()

更多推荐