日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Pytorch神经网络理论篇】 08 Softmax函数(处理分类问题)

發布時間:2024/7/5 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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函数(处理分类问题)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。