结合实例理解pytorch中交叉熵损失函数

本文深入探讨了PyTorch中交叉熵损失函数的工作原理,解释了Softmax函数的作用,并通过具体示例展示了交叉熵损失的计算过程。适合深度学习初学者及对损失函数有进一步了解需求的读者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下仅为个人理解,如有不正之处还请指出,欢迎交流!

1.pytorch中的交叉熵损失函数如下:

torch.nn.functional.cross_entropy(input, target, weight=None, size_average=None, ignore_index=-100, reduce=None, reduction='mean')

损失函数即反映了预测值(input)和真实值(target)之间的差异。通过训练使loss收敛,以达到预测值能够很好地反映真实值的目的。

2.在实际使用中得到的预测值与真实值

假设有A、B两类待检测目标,加上背景共3类,则得到如下预测结果:

tensor([[-0.0295, -0.0632,  0.0223],
        [ 0.0209,  0.3975,  0.3867],
        [ 0.1598,  0.2521,  0.2419],
        ...,
        [ 0.1016,  0.4608,  0.4940],
        [-0.1843,  0.3046,  0.0909],
        [-0.1861,  0.3968,  0.5257]])

对应真实值如下:

tensor([2, 1, 1,..., 0, 0, 0])

可见,对每一个候选框对应得到一个包含3个元素的预测结果,其真实值对应0(背景)、1(A类)、2(B类)。

3.Softmax函数表达式

在理解交叉熵损失函数之前,需要明确softmax函数,其表达式如下:

softmax: \frac{exp(x_{i})}{\sum_{j}exp(x_{j})}

以上方数值为例,第一个目标标签真实值为2对应B类,其对应的预测概率为:

P_{2} =\frac{exp(0.0223)}{\exp(-0.0295)+exp(-0.0632)+exp(0.0223)}     其余同理,且3个类别的预测概率总和为1

另,如需单独调用,接口如下:

torch.nn.functional.softmax(input, dim=None, _stacklevel=3, dtype=None)

4.理解交叉熵损失函数

其计算表达式为:cross_ -entropy=-\sum_{k=1}^{N}(p_{k}*logq_{k})   

其中,p表示真实值,为one-hot向量;q为对应经过上文softmax之后的预测概率

由于one-hot向量中的元素不是1就是0,所以可将交叉熵损失的表达式简化为:

\fn_cm cross_ -entropy=-\sum_{k=1}^{N}(p_{k}*logq_{k})=-logq_{target}      其中,\fn_cm q_{target}为真实值对应类别的预测概率

综上,交叉熵损失函数的计算方式为:

cross_-entropy loss=-log(\frac{exp(x_{target})}{\sum_{j}exp(x_{j})})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值