【Pytorch神经网络理论篇】 08 Softmax函数(处理分类问题)
生活随笔
收集整理的這篇文章主要介紹了
【Pytorch神经网络理论篇】 08 Softmax函数(处理分类问题)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.1 Softmax函數簡介
oftmax函數本質也為激活函數,主要用于多分類問題,且要求分類互斥,分類器最后的輸出單元需要Softmax 函數進行數值處理。
Tip:在搭建網絡模型的時候,需要用Softmax將目標分成幾個,則在最后一層放幾個節點
1.1.1Softmax函數構成
C為:分類的類別數
1.1.2 Softmax傻瓜式解釋
將所有的值用e的n次方計算出來,求和之后計算每一個值的占比,保證其和為100%,即為概率
Tip:若多分類任務中的每個類之間不是互斥,則將其轉化為多個二分類來組成
1.2 Softmax函數的原理剖析
1.3 Softmax代碼部分
1.3.1 常用的Softmax結構
| torch.nn.Softmax(dim) | 計算Softmax,參數代表計算維度 |
| torch.nn.Softmax2d() | 對每個圖片進行Softmax處理 |
| torch.nn.LogSoftmax(logits,name=None) | 對Softmax取對數,常與NULLLoss聯合使用,實現交叉熵損失的計算 |
1.3.2?Softmax代碼實現
import torch#定義模擬數據 # logits:神經網絡的計算結果,一共兩個數據,每個數據的結果中包括三個數值,其為三個分類的結果 logits = torch.autograd.Variable(torch.tensor([[2,0.5,6],[0.1,0,3]])) # labels:神經網絡的計算結果對應的標簽,每個數值代表一個數據分類的編號,且相互互斥 labels = torch.autograd.Variable(torch.LongTensor([2,1])) print(logits) # 輸出 tensor([[2.0000, 0.5000, 6.0000],[0.1000, 0.0000, 3.0000]]) print(labels) # 輸出 tensor([2, 1])#計算 Softmax print('Softmax:',torch.nn.Softmax(dim=1)(logits)) # 輸出 Softmax: tensor([[0.0179, 0.0040, 0.9781],[0.0498, 0.0451, 0.9051]])### LogSoftmax() + NULLoss() = CrossEntropyLoss() #計算 LogSoftmax:對Softmax取對數 logsoftmax = torch.nn.LogSoftmax(dim=1)(logits) print('LogSoftmax:',logsoftmax) # 輸出 LogSoftmax: tensor([[-4.0222, -5.5222, -0.0222],[-2.9997, -3.0997, -0.0997]]) #計算 NULLoss output = torch.nn.NLLLoss()(logsoftmax,labels) print('NULLoss:',output) # 輸出 NULLoss: tensor(1.5609)#計算 CrossEntropyLoss CrossEntropyLoss_return = torch.nn.CrossEntropyLoss()(logits,labels) print('CrossEntropyLoss:',CrossEntropyLoss_return) # 輸出 CrossEntropyLoss: tensor(1.5609)總結
以上是生活随笔為你收集整理的【Pytorch神经网络理论篇】 08 Softmax函数(处理分类问题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Pytorch神经网络基础理论篇】 0
- 下一篇: python ssh实现_SSH协议的P