pytorch機(jī)器學(xué)習(xí)softmax回歸的簡潔實(shí)現(xiàn)
通過深度學(xué)習(xí)框架的高級(jí)API也能更方便地實(shí)現(xiàn)分類模型。讓我們繼續(xù)使用Fashion-MNIST數(shù)據(jù)集,并保持批量大小為256。
import torch from torch import nn from d2l import torch as d2l
batch_size = 256 train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)
初始化模型參數(shù)
由于sofrmax回歸的輸出層是一個(gè)全連接層,因此,為了實(shí)現(xiàn)我們的模型,我們只需在Sequential中添加一個(gè)帶有10個(gè)輸出的全連接層。同樣,在這里,Sequential并不是必要的,但我們可能會(huì)形成這種習(xí)慣。因?yàn)樵趯?shí)現(xiàn)深度模型時(shí),Sequential將無處不在。我們?nèi)匀灰跃?和標(biāo)準(zhǔn)差0.01隨機(jī)初始化權(quán)重。
# PyTorch不會(huì)隱式地調(diào)整輸入的形狀。因此,我們?cè)诰€性層前定義了展平層(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)
重新審視softmax的實(shí)現(xiàn)
在前面的例子中,我們計(jì)算了模型的輸出,然后將此輸出送入交叉熵?fù)p失。從數(shù)學(xué)上講,這是一件完全合理的事情。然而,從計(jì)算角度來看,指數(shù)可能會(huì)造成數(shù)值穩(wěn)定性的問題,包括上溢和下溢。
我們也希望保留傳統(tǒng)的softmax函數(shù),以備我們需要評(píng)估通過模型輸出的概率。但是,我們沒有將softmax概率傳遞到損失函數(shù)中,而是在交叉熵?fù)p失函數(shù)中傳遞未歸一化的預(yù)測(cè),并同時(shí)計(jì)算softmax及其對(duì)數(shù)。
loss = nn.CrossEntropyLoss()
優(yōu)化算法
在這里,我們使用學(xué)習(xí)率為0.1的小批量隨機(jī)梯度下降作為優(yōu)化算法。這與我們?cè)诰€性回歸例子中的相同,這說明了優(yōu)化器的普適性。
trainer = torch.optim.SGD(net.parameters(), lr=0.1)

以上就是pytorch機(jī)器學(xué)習(xí)softmax回歸的簡潔實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于pytorch機(jī)器學(xué)習(xí)softmax回歸的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python移動(dòng)測(cè)試開發(fā)subprocess模塊項(xiàng)目實(shí)戰(zhàn)
這篇文章主要為大家介紹了Python移動(dòng)測(cè)試開發(fā)subprocess模塊項(xiàng)目實(shí)戰(zhàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
OpenCV實(shí)現(xiàn)去除背景識(shí)別的方法總結(jié)
這篇文章主要為大家詳細(xì)介紹了如何利用OpenCV實(shí)現(xiàn)去除背景識(shí)別的功能,文中為大家總結(jié)了一些方法,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下2022-10-10
Python實(shí)現(xiàn)提取JSON文件中指定數(shù)據(jù)并保存至CSV或Excel內(nèi)
這篇文章主要介紹了如何基于Python語言實(shí)現(xiàn)讀取JSON格式的數(shù)據(jù),并將提取到的數(shù)據(jù)保存到.csv格式或.xlsx格式的表格文件中,感興趣的小伙伴可以了解下2023-08-08
Java ExcutorService優(yōu)雅關(guān)閉方式解析
這篇文章主要介紹了Java ExcutorService優(yōu)雅關(guān)閉方式解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
Python使用matplotlib.pyplot畫熱圖和損失圖的代碼詳解
眾所周知,在完成論文相關(guān)工作時(shí)畫圖必不可少,如損失函數(shù)圖、熱力圖等是非常常見的圖,在本文中,總結(jié)了這兩個(gè)圖的畫法,下面給出了完整的代碼,開箱即用,感興趣的同學(xué)可以自己動(dòng)手嘗試一下2023-09-09
用python寫一個(gè)帶有g(shù)ui界面的密碼生成器
這篇文章主要介紹了用python寫一個(gè)帶有g(shù)ui界面的密碼生成器,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-11-11
linux平臺(tái)使用Python制作BT種子并獲取BT種子信息的方法
這篇文章主要介紹了linux平臺(tái)使用Python制作BT種子并獲取BT種子信息的方法,結(jié)合實(shí)例形式詳細(xì)分析了Python BT模塊的安裝及針對(duì)BT種子文件的相關(guān)操作技巧,需要的朋友可以參考下2017-01-01
使用 Django Highcharts 實(shí)現(xiàn)數(shù)據(jù)可視化過程解析
這篇文章主要介紹了使用 Django Highcharts 實(shí)現(xiàn)數(shù)據(jù)可視化過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07

