pytorch基础学习2

pytorch之交叉熵损失函数

一、交叉熵

Pytorch中计算的交叉熵并不是采用
在这里插入图片描述
而是
在这里插入图片描述

它是交叉熵的另外一种方式。
Pytorch中CrossEntropyLoss()函数的主要是将softmax-log-NLLLoss合并到一块得到的结果。
实际等同于:
CrossEntropyLoss()=log_softmax() + NLLLoss()
交叉熵损失函数是常常用来来解决C分类问题的,需要给函数提供输入是一个一维的数据,输出的是给每个类别一个权重(或者说是概率)。对于不平衡的数据集非常有用。
“输入”应该包含每个类的原始的、未标准化的分数,且必须是一个张量,如math: ’ (minibatch, C) '或:math: ’ (minibatch, C, d_1, d_2,…)。输出是每个类别的得分组成的向量。

二、数学表达式

在这里插入图片描述

  • m是总样本个数
  • k是总的类别数量
  • 示性函数的条件是I(Yi = j )表示当标签等于模型分类的时候,值为1,当标签不等于模型分类的时候,值为0.
  • 对数括号里表示归一化,对每个类别的实际得分与总得分求比值,归一化为每个类别的概率,每个类别的概率取值范围(0,1)
  • 概率的对数求出来必然为负数,而损失函数是要求模型预测值与标签的差值越来越小,预测值就会越来越准确,故损失函数最终要使得得到的损失值是大于零的值,故在前面加负号。

最终损失函数得到的是函数图像应如下图红色:
在这里插入图片描述
实际上pytorch交叉熵是对每批样本的分类损失计算损失的平均值。

三、部分参数

weight (Tensor, optional): 给每个类的手动重标定权值。如果给定,必须是一个大小为' C '的张量权值(张量,可选):给每个类的手动重标定权值。如果给定,必须是一个大小为' C '的张量 size average (bool, optional): 默认情况下,损失是对批处理中的每个损失元素进行平均。注意,对于一些损失,每个样本有多个元素。如果字段:attr: ' size_average '被设置为' ' False ' ',那么损失将对每个小批进行求和。当reduce为“False”时被忽略。 on :attr:`size_average`.当:attr: ' reduce '为' ' False ' '时,返回每个批处理元素的损失,并忽略:attr: ' size_average '。默认值: ``True`` ``'mean'``: 输出的总和将除以输出元素的数量,' " sum' ' ':输出将被求和。

该处使用的url网络请求的数据。


四、shape

–Input: :输入是以元组形式(N,C)。C代表的是类别数,N是每批样本的个数。

– Target: 目标是求的N个样本的损失值。

– Output: 输出是(单行N列的向量)

参考:https://blog.csdn.net/zwqjoy/article/details/96282788?biz_id=102&utm_term=nn.NLLLoss&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-96282788&spm=1018.2118.3001.4187
https://blog.csdn.net/yinizhilianlove/article/details/104033398

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值