在使用NLLLOSS之前先试用logsoftmax作为神经网络中最后一层的处理,然后在将这个输出作为NLLLOSS的输入计算误差,其中大部分的使用需要传的参数为:output
和label
,内部的计算公式是:
\[loss = output[label] \]
以十分类问题为例:
使用logsoftmax处理之后得到的数据为(这里仅展示一组数据,所以对应的label也为一个):
tensor([-2.7536, -2.2437, -2.2050, -2.5588, -2.3351, -2.1301, -2.1378, -2.6896,
-2.1226, -2.1083])
labels = 8
则上述的数据经过nllloss运算之后得到的结果是:-2.1226
如果是多组的情况,具体的计算流程和上述的一模一样,只不过将对应的label元素当做与output张量的下标,取出元素后做累加,累加之后再求均值即可。