首页 新闻 会员 周边 捐助

多分类问题,Pytorch训练中,目标值是标签,网络的输出是向量,torch是如何处理的?

0
[已解决问题] 解决于 2022-07-14 12:40

在学习Pytorch 中,模仿了官方文档的一次对图像的十分类训练。

我用的是Pytorch自带的手写数字的数据集。

那么在官方文档中,损失是直接用预测值和目标值计算的。

可是神经网络的输出是长度为10的向量,意思是哪一个值最大,认为预测的是这个值。比如(1,2,3,4,100,3,22,4,2,1),则预测的是数字5。

而目标值只是一个数字,比如3,4,5。这两个是如何进行损失值计算的呢?

一万亿颗星的主页 一万亿颗星 | 初学一级 | 园豆:158
提问于:2022-07-12 17:19

所以是在求预测概率和实际概率的距离,而不是实际数值的距离

∮坦荡dS 2年前
< >
分享
最佳答案
1

在多分类任务中,经常采用 softmax 激活函数+交叉熵损失函数,因为交叉熵描述了两个概率分布的差异,然而神经网络输出的是向量,并不是概率分布的形式。所以需要 softmax激活函数将一个向量进行“归一化”成概率分布的形式,再采用交叉熵损失函数计算 loss。

奖励园豆:5
∮坦荡dS | 菜鸟二级 |园豆:218 | 2022-07-13 22:33

好像明白了,softmax函数将神经网络的输出值转换为概率,在交叉熵的公式中,
真实值one-hot编码,使得只有正确的项不为0,这样用来计算的就只是预测值的概率和one-hot中的1。

一万亿颗星 | 园豆:158 (初学一级) | 2022-07-14 11:17

@一万亿颗星: 嗯嗯,就是这样

∮坦荡dS | 园豆:218 (菜鸟二级) | 2022-07-14 11:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册