PyTorch中F.softmax的具體使用
F.softmax 是 PyTorch 中用于計(jì)算 Softmax 函數(shù) 的函數(shù),通常用于 多分類任務(wù) 的輸出層,用來(lái)將模型的原始輸出(稱為 logits)轉(zhuǎn)化為概率分布。
Softmax 函數(shù)將每個(gè)類別的得分(logits)轉(zhuǎn)換為一個(gè)介于 0 和 1 之間的概率值,并且所有類別的概率之和等于 1。
Softmax 函數(shù)的定義
給定一個(gè)包含
個(gè)元素的向量
,Softmax 函數(shù)的輸出是一個(gè)概率分布
,其中每個(gè)
表示第
個(gè)類別的概率。Softmax 的公式如下:
??
:第
個(gè)類別的原始得分(logit)。
?:對(duì)得分進(jìn)行指數(shù)運(yùn)算。- ?
:所有類別得分指數(shù)的總和,用于對(duì)概率進(jìn)行歸一化,使得所有的概率和為 1。

F.softmax 的作用
F.softmax 函數(shù)將給定的 logits(即模型的原始輸出)轉(zhuǎn)換為概率分布。
假設(shè)我們有一個(gè)包含 10 個(gè)類別的模型輸出,那么 F.softmax 會(huì)將這 10 個(gè) logits 轉(zhuǎn)化為 10 個(gè)概率,每個(gè)概率值在 0 到 1 之間,并且所有 10 個(gè)概率的和為 1。
用法
在 PyTorch 中,F.softmax 由 torch.nn.functional 模塊提供,使用方式如下:
import torch import torch.nn.functional as F # 假設(shè)我們有一個(gè)大小為 [batch_size, num_classes] 的張量 logits = torch.tensor([[1.0, 2.0, 3.0], [1.0, 2.0, 3.0]]) # 計(jì)算 softmax,dim=1 表示對(duì)每一行進(jìn)行 softmax 計(jì)算 probabilities = F.softmax(logits, dim=1) print(probabilities)
詳細(xì)解釋
logits:是一個(gè) 2D 張量,每一行表示一個(gè)樣本的原始輸出值(logits),每一列表示該樣本在某個(gè)類別的得分。
dim=1:指定了計(jì)算 Softmax 的維度。
dim=1表示對(duì)每一行計(jì)算 Softmax,即每個(gè)樣本的得分都會(huì)被轉(zhuǎn)化為一個(gè)概率分布。注意,如果是處理多維數(shù)據(jù),可以通過(guò)調(diào)整dim來(lái)指定 Softmax 計(jì)算的維度。- 如果
dim=0,則對(duì)每列計(jì)算 Softmax,通常在處理多批次數(shù)據(jù)時(shí)不常用。
- 如果
output:Softmax 轉(zhuǎn)換后的輸出是一個(gè)概率分布,所有元素都在 0 到 1 之間,并且每行的元素和為 1。
示例代碼解釋
import torch import torch.nn.functional as F # 假設(shè)輸入是一個(gè)大小為 (2, 3) 的張量,其中 2 是 batch_size,3 是類別數(shù) logits = torch.tensor([[1.0, 2.0, 3.0], [1.0, 2.0, 3.0]]) # 計(jì)算 Softmax,按照列來(lái)計(jì)算,即對(duì)每行進(jìn)行 Softmax probabilities = F.softmax(logits, dim=1) print(probabilities)
輸入:
tensor([[1.0, 2.0, 3.0],
[1.0, 2.0, 3.0]])
輸出:
tensor([[0.09003057, 0.24472847, 0.66524096],
[0.09003057, 0.24472847, 0.66524096]])
解釋:
- 對(duì)于每一行的得分,Softmax 會(huì)將其轉(zhuǎn)換為概率。
- 第一行
[1.0, 2.0, 3.0]經(jīng)過(guò) Softmax 處理后得到[0.0900, 0.2447, 0.6652],這些概率值的總和為 1。 - 第二行
[1.0, 2.0, 3.0]同樣經(jīng)過(guò) Softmax 轉(zhuǎn)換后,得到相同的概率分布[0.0900, 0.2447, 0.6652],這也保證了概率總和為 1。
- 第一行
為什么使用 Softmax?
多分類任務(wù):在多分類問(wèn)題中,模型的輸出通常是每個(gè)類別的原始得分。Softmax 函數(shù)能夠?qū)⑦@些得分轉(zhuǎn)化為概率分布,使得每個(gè)類別的預(yù)測(cè)概率能夠加起來(lái)為 1,并且通過(guò)最大概率來(lái)做預(yù)測(cè)。
分類概率:Softmax 給出的每個(gè)類別的概率可以幫助我們了解模型對(duì)每個(gè)類別的信心程度。對(duì)于實(shí)際應(yīng)用,通常選擇概率最大的類別作為模型的預(yù)測(cè)結(jié)果。
Softmax 與 Logits
- Logits 是未經(jīng)處理的原始輸出值,通常來(lái)自神經(jīng)網(wǎng)絡(luò)的輸出層。
- Softmax 是對(duì) logits 的一種規(guī)范化,它將 logits 轉(zhuǎn)換為 0 到 1 之間的概率值。
示例:多分類任務(wù)中的 Softmax
假設(shè)我們有一個(gè)多分類任務(wù),模型的輸出是一個(gè)包含 4 個(gè)類別的 logits 向量,[2.0, 1.0, 0.1, 0.5]。
我們希望將其轉(zhuǎn)換為類別的概率分布。
import torch import torch.nn.functional as F logits = torch.tensor([2.0, 1.0, 0.1, 0.5]) # 使用 F.softmax 將 logits 轉(zhuǎn)換為概率分布 probabilities = F.softmax(logits, dim=0) print(probabilities)
輸出:
tensor([0.5438, 0.1993, 0.0717, 0.1852])
解釋:
- 原始 logits 為
[2.0, 1.0, 0.1, 0.5],經(jīng)過(guò) Softmax 處理后,得到了每個(gè)類別的概率[0.5438, 0.1993, 0.0717, 0.1852]。概率最大的類別是第一個(gè)類別,其概率為 0.5438。
總結(jié)
- Softmax 函數(shù)將 logits 轉(zhuǎn)換為概率分布,適用于多分類任務(wù)。
- 它保證了輸出的每個(gè)類別概率值在 0 到 1 之間,并且所有概率的和為 1。
- 在 PyTorch 中,
F.softmax是計(jì)算 Softmax 的常用函數(shù),通常與CrossEntropyLoss搭配使用。
到此這篇關(guān)于PyTorch中F.softmax的具體使用的文章就介紹到這了,更多相關(guān)PyTorch F.softmax內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Python實(shí)現(xiàn)智能聊天機(jī)器人的完整代碼
本文基于Python語(yǔ)言搭建一款輕量級(jí)本地智能聊天機(jī)器人,無(wú)需依賴第三方付費(fèi)接口,依靠基礎(chǔ)自然語(yǔ)言匹配邏輯實(shí)現(xiàn)人機(jī)對(duì)話功能,案例代碼簡(jiǎn)潔易懂、可直接運(yùn)行,需要的朋友可以參考下2026-05-05
詳解如何使用Pandas處理時(shí)間序列數(shù)據(jù)
時(shí)間序列數(shù)據(jù)在數(shù)據(jù)分析建模中很常見(jiàn),例如天氣預(yù)報(bào),空氣狀態(tài)監(jiān)測(cè),股票交易等金融場(chǎng)景,本文給大家詳細(xì)介紹了如何使用Pandas處理時(shí)間序列數(shù)據(jù),文中通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-01-01
flask之郵件發(fā)送的實(shí)現(xiàn)示例
Flask-Mail是一個(gè)處理電子郵件發(fā)送的擴(kuò)展,它提供了簡(jiǎn)單且易于使用的API,可以方便地發(fā)送電子郵件,本文就來(lái)介紹一下flask之郵件發(fā)送的實(shí)現(xiàn)示例,感興趣的可以了解一下2023-12-12
如何利用python寫(xiě)GUI及生成.exe可執(zhí)行文件
工作中需要開(kāi)發(fā)一個(gè)小工具,簡(jiǎn)單的UI界面可以很好的提高工具的實(shí)用性,由此開(kāi)啟了我的第一次GUI開(kāi)發(fā)之旅,這篇文章主要給大家介紹了關(guān)于如何利用python寫(xiě)GUI及生成.exe可執(zhí)行文件的相關(guān)資料,需要的朋友可以參考下2021-12-12
Python+微信接口實(shí)現(xiàn)運(yùn)維報(bào)警
這篇文章主要介紹了Python+微信接口實(shí)現(xiàn)運(yùn)維報(bào)警的相關(guān)資料,需要的朋友可以參考下2016-08-08
Pandas DataFrame replace替換后無(wú)效的解決
這篇文章主要介紹了Pandas DataFrame replace替換后無(wú)效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
mac安裝python3后使用pip和pip3的區(qū)別說(shuō)明
這篇文章主要介紹了mac安裝python3后使用pip和pip3的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09

