多分类问题,Pytorch训练中,目标值是标签,网络的输出是向量,torch是如何处理的?
在学习Pytorch 中,模仿了官方文档的一次对图像的十分类训练。
我用的是Pytorch自带的手写数字的数据集。
那么在官方文档中,损失是直接用预测值和目标值计算的。
可是神经网络的输出是长度为10的向量,意思是哪一个值最大,认为预测的是这个值。比如(1,2,3,4,100,3,22,4,2,1),则预测的是数字5。
而目标值只是一个数字,比如3,4,5。这两个是如何进行损失值计算的呢?
回答
在多分类任务中,经常采用 softmax 激活函数+交叉熵损失函数,因为交叉熵描述了两个概率分布的差异,然而神经网络输出的是向量,并不是概率分布的形式。所以需要 softmax激活函数将一个向量进行“归一化”成概率分布的形式,再采用交叉熵损失函数计算 loss。
THE END
二维码