在使用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張量的下標,取出元素后做累加,累加之后再求均值即可。