中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

青島網(wǎng)站建設(shè)哪家權(quán)威寧波網(wǎng)站優(yōu)化公司價(jià)格

青島網(wǎng)站建設(shè)哪家權(quán)威,寧波網(wǎng)站優(yōu)化公司價(jià)格,網(wǎng)站開發(fā)系統(tǒng)測試,北京靠譜的網(wǎng)站建設(shè)👨?🎓作者簡介:一位即將上大四,正專攻機(jī)器學(xué)習(xí)的保研er 🌌上期文章:機(jī)器學(xué)習(xí)&&深度學(xué)習(xí)——softmax回歸從零開始實(shí)現(xiàn) 📚訂閱專欄:機(jī)器學(xué)習(xí)&&深度學(xué)習(xí) 希望文章對你…

👨?🎓作者簡介:一位即將上大四,正專攻機(jī)器學(xué)習(xí)的保研er
🌌上期文章:機(jī)器學(xué)習(xí)&&深度學(xué)習(xí)——softmax回歸從零開始實(shí)現(xiàn)
📚訂閱專欄:機(jī)器學(xué)習(xí)&&深度學(xué)習(xí)
希望文章對你們有所幫助

繼續(xù)使用Fashion-MNIST數(shù)據(jù)集,并保持批量大小為256:

import torch
from torch import nn
from d2l import torch as d2lbatch_size = 256
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)

softmax回歸的簡潔實(shí)現(xiàn)

  • 初始化模型參數(shù)
  • 重新審視softmax的實(shí)現(xiàn)
    • 數(shù)學(xué)推導(dǎo)
    • 交叉熵函數(shù)
  • 優(yōu)化算法
  • 訓(xùn)練

初始化模型參數(shù)

softmax的輸出層是一個(gè)全連接層,因此,為了實(shí)現(xiàn)模型,我們只需要在Sequential中添加一個(gè)帶有10個(gè)輸出的全連接層。當(dāng)然這里的Sequential并不是必要的,但是他是深度模型的基礎(chǔ)。我們?nèi)耘f以均值為0,標(biāo)準(zhǔn)差為0.01來隨機(jī)初始化權(quán)重。

# pytorch不會(huì)隱式地調(diào)整輸入的形狀
# 因此在線性層前就定義了展平層flatten,來調(diào)整網(wǎng)絡(luò)輸入的形狀
net = nn.Sequential(nn.Flatten(), nn.Linear(784, 10))def init_weights(m):if type(m) == nn.Linear:nn.init.normal_(m.weight, std=0.01)net.apply(init_weights)  # 給net每一層跑一次init_weights函數(shù)

重新審視softmax的實(shí)現(xiàn)

數(shù)學(xué)推導(dǎo)

在之前的例子里,我們計(jì)算了模型的輸出,然后將此輸出送入交叉熵?fù)p失。看似合理,但是指數(shù)級計(jì)算可能會(huì)造成數(shù)值的穩(wěn)定性問題。
回想一下之前的softmax函數(shù):
y ^ j = e x p ( o j ) ∑ k e x p ( o k ) 其中 y ^ j 是預(yù)測的概率分布, o j 是未規(guī)范化的第 j 個(gè)元素 \hat{y}_j=\frac{exp(o_j)}{\sum_kexp(o_k)}\\ 其中\(zhòng)hat{y}_j是預(yù)測的概率分布,o_j是未規(guī)范化的第j個(gè)元素 y^?j?=k?exp(ok?)exp(oj?)?其中y^?j?是預(yù)測的概率分布,oj?是未規(guī)范化的第j個(gè)元素
由于o中的一些數(shù)值會(huì)非常大,所以可能會(huì)讓其指數(shù)值上溢,使得分子或分母變成inf,最后得到的預(yù)測值可能變成的0、inf或者nan。此時(shí)我們無法得到一個(gè)明確的交叉熵值。
提出解決這個(gè)問題的一個(gè)技巧:在繼續(xù)softmax計(jì)算之前,先從所有的o中減去max(o),修改softmax函數(shù)的構(gòu)造且不改變其返回值:
y ^ j = e x p ( o j ? m a x ( o k ) ) e x p ( m a x ( o k ) ) ∑ k e x p ( o j ? m a x ( o k ) ) e x p ( m a x ( o k ) ) \hat{y}_j=\frac{exp(o_j-max(o_k))exp(max(o_k))}{\sum_kexp(o_j-max(o_k))exp(max(o_k))} y^?j?=k?exp(oj??max(ok?))exp(max(ok?))exp(oj??max(ok?))exp(max(ok?))?
這樣操作以后,可能會(huì)使得一些分子的exp(o-max(o))有接近0的值,即為下溢。這些值可能會(huì)四舍五入為0,這樣就會(huì)使得預(yù)測值為0,那么此時(shí)要是取對數(shù)以后就會(huì)變?yōu)?inf。要是這樣反向傳播幾步,我們可能會(huì)發(fā)現(xiàn)自己屏幕有一堆的nan。
盡管我們需要計(jì)算指數(shù)函數(shù),但是我們最終會(huì)在計(jì)算交叉熵?fù)p失的時(shí)候會(huì)取他們的對數(shù)。盡管通過將softmax和交叉熵結(jié)合在一起,可以避免反向傳播過程中可能會(huì)困擾我們的數(shù)值穩(wěn)定性問題。如下面的式子:
l o g ( y ^ j ) = l o g ( e x p ( o j ? m a x ( o k ) ) ∑ k e x p ( o k ? m a x ( o k ) ) ) = l o g ( e x p ( o j ? m a x ( o k ) ) ) ? l o g ( ∑ k e x p ( o k ? m a x ( o k ) ) ) = o j ? m a x ( o k ) ? l o g ( ∑ k e x p ( o k ? m a x ( o k ) ) ) log(\hat{y}_j)=log(\frac{exp(o_j-max(o_k))}{\sum_kexp(o_k-max(o_k))})\\ =log(exp(o_j-max(o_k)))-log(\sum_kexp(o_k-max(o_k)))\\ =o_j-max(o_k)-log(\sum_kexp(o_k-max(o_k))) log(y^?j?)=log(k?exp(ok??max(ok?))exp(oj??max(ok?))?)=log(exp(oj??max(ok?)))?log(k?exp(ok??max(ok?)))=oj??max(ok?)?log(k?exp(ok??max(ok?)))
通過上式,我們避免了計(jì)算單獨(dú)的exp(o-max(o)),而是直接使用o-max(o)。
因此,我們計(jì)算交叉熵函數(shù)的時(shí)候,傳遞的不是未規(guī)范化的預(yù)測o,而不是softmax。
但是我們也希望保留傳統(tǒng)的softmax函數(shù),以備我們要評估通過模型輸出的概率。

交叉熵函數(shù)

在這里介紹一下交叉熵函數(shù),以用于上面推導(dǎo)所需的需求:

torch.nn.CrossEntropyLoss(weight=None,ignore_index=-100,reduction='mean')

交叉熵函數(shù)是將LogSoftMax和NLLLoss集成到一個(gè)類中,通常用于多分類問題。其參數(shù)使用情況:

ignore_index:指定被忽略且對輸入梯度沒有貢獻(xiàn)的目標(biāo)值。
reduction:string類型的可選項(xiàng),可在[none,mean,sum]中選。none表示不降維,返回和target一樣的形狀;mean表示對一個(gè)batch的損失求均值;sum表示對一個(gè)batch的損失求和。
weight:是一個(gè)一維的張量,包含n個(gè)元素,分別代表n類的權(quán)重,在訓(xùn)練樣本不均衡時(shí)很有用,默認(rèn)為None:
(1)當(dāng)weight=None時(shí),損失函數(shù)計(jì)算方式為
loss(x,class)=-log(exp(x[class])/Σexp(x[j]))=-x[class]+log(Σexp(x[j])
(2)當(dāng)weight被指定時(shí),損失函數(shù)計(jì)算方式為:
loss(x,class)=weight[class]×(-x[class]+log(Σexp(x[j]))

# 在交叉熵?fù)p失函數(shù)中傳遞未歸一化的預(yù)測,并同時(shí)計(jì)算softmax及其導(dǎo)數(shù)
loss = nn.CrossEntropyLoss(reduction='none')

優(yōu)化算法

# 優(yōu)化算法
trainer = torch.optim.SGD(net.parameters(), lr=0.1)

訓(xùn)練

調(diào)用之前定義的訓(xùn)練函數(shù)來訓(xùn)練模型:

# 調(diào)用之前的訓(xùn)練函數(shù)來訓(xùn)練模型
num_epochs = 10
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, trainer)
d2l.plt.show()

在這里插入圖片描述

http://www.risenshineclean.com/news/57272.html

相關(guān)文章:

  • 發(fā)布消息做任務(wù)的網(wǎng)站網(wǎng)絡(luò)推廣培訓(xùn)課程內(nèi)容
  • 如何引用網(wǎng)站圖片東莞網(wǎng)站設(shè)計(jì)公司排名
  • 池州市住房和城鄉(xiāng)建設(shè)委員會(huì)網(wǎng)站模板建站的網(wǎng)站
  • 寧波網(wǎng)站設(shè)計(jì)建站服務(wù)公司搜索引擎優(yōu)化的作用是什么
  • 網(wǎng)站優(yōu)怎么做百度一下百度網(wǎng)頁版
  • 做網(wǎng)站二維碼網(wǎng)絡(luò)推廣怎么學(xué)
  • 免費(fèi)搭建業(yè)務(wù)網(wǎng)站阿里云云服務(wù)平臺
  • 服務(wù)器租用網(wǎng)站模板寧波seo網(wǎng)絡(luò)推廣軟件系統(tǒng)
  • php裝飾公司網(wǎng)站源碼云南seo網(wǎng)站關(guān)鍵詞優(yōu)化軟件
  • 哪個(gè)網(wǎng)站做黑色星期五訂酒店活動(dòng)如何做網(wǎng)站設(shè)計(jì)
  • 咖啡網(wǎng)站設(shè)計(jì)模板有什么好的網(wǎng)站嗎
  • 常州市城鄉(xiāng)建設(shè)學(xué)院網(wǎng)站如何在百度推廣自己的產(chǎn)品
  • 有沒有專門做牛仔的網(wǎng)站谷歌引擎搜索入口
  • 政府網(wǎng)站建設(shè)運(yùn)維情況自查沈陽seo關(guān)鍵詞排名優(yōu)化軟件
  • 建設(shè)醫(yī)療網(wǎng)站怎樣注冊一個(gè)自己的平臺
  • 臨沂網(wǎng)站建設(shè)設(shè)計(jì)公司小紅書廣告投放平臺
  • 做早餐燒菜有什么網(wǎng)站seo綜合查詢是什么
  • 內(nèi)網(wǎng)網(wǎng)站建設(shè)方案廣告視頻
  • 杭州做網(wǎng)站需要多少錢站長統(tǒng)計(jì)網(wǎng)站統(tǒng)計(jì)
  • 艾辰做網(wǎng)站黑帽seo技巧
  • 有沒有專業(yè)收費(fèi)做網(wǎng)站優(yōu)化的數(shù)字化營銷
  • 塘下網(wǎng)站建設(shè)深圳網(wǎng)絡(luò)推廣公司排名
  • 凡科網(wǎng)做的網(wǎng)站保存后就上傳了嗎深圳網(wǎng)絡(luò)推廣渠道
  • 網(wǎng)站制作哪家實(shí)惠seo權(quán)重優(yōu)化軟件
  • 深圳網(wǎng)站維護(hù)優(yōu)化百度識別圖片找圖
  • 單位加強(qiáng)網(wǎng)站建設(shè)網(wǎng)絡(luò)推廣自學(xué)
  • 徐州做網(wǎng)站需要多少錢seo自媒體培訓(xùn)
  • 如何寫代碼做網(wǎng)站百度關(guān)鍵詞排名軟件
  • 滕州做網(wǎng)站網(wǎng)店代運(yùn)營騙局流程
  • 做網(wǎng)站的公司都是小公司百度關(guān)鍵詞模擬點(diǎn)擊軟件