pytorch機器學習softmax回歸的簡潔實現
通過深度學習框架的高級API也能更方便地實現分類模型。讓我們繼續使用Fashion-MNIST數據集,並保持批量大小為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)
初始化模型參數
由於sofrmax回歸的輸出層是一個全連接層,因此,為瞭實現我們的模型,我們隻需在Sequential中添加一個帶有10個輸出的全連接層。同樣,在這裡,Sequential並不是必要的,但我們可能會形成這種習慣。因為在實現深度模型時,Sequential將無處不在。我們仍然以均值0和標準差0.01隨機初始化權重。
# PyTorch不會隱式地調整輸入的形狀。因此,我們在線性層前定義瞭展平層(flatten),來調整網絡輸入的形狀 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的實現
在前面的例子中,我們計算瞭模型的輸出,然後將此輸出送入交叉熵損失。從數學上講,這是一件完全合理的事情。然而,從計算角度來看,指數可能會造成數值穩定性的問題,包括上溢和下溢。
我們也希望保留傳統的softmax函數,以備我們需要評估通過模型輸出的概率。但是,我們沒有將softmax概率傳遞到損失函數中,而是在交叉熵損失函數中傳遞未歸一化的預測,並同時計算softmax及其對數。
loss = nn.CrossEntropyLoss()
優化算法
在這裡,我們使用學習率為0.1的小批量隨機梯度下降作為優化算法。這與我們在線性回歸例子中的相同,這說明瞭優化器的普適性。
trainer = torch.optim.SGD(net.parameters(), lr=0.1)
以上就是pytorch機器學習softmax回歸的簡潔實現的詳細內容,更多關於pytorch機器學習softmax回歸的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- Python深度學習pytorch神經網絡多層感知機簡潔實現
- 關於Pytorch中模型的保存與遷移問題
- pyTorch深度學習softmax實現解析
- pytorch神經網絡從零開始實現多層感知機
- pytorch 搭建神經網路的實現