深度学习pytorch--多层感知机(二)
生活随笔
收集整理的這篇文章主要介紹了
深度学习pytorch--多层感知机(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
多層感知機的從零開始實現
- 獲取和讀取數據
- 定義模型參數
- 定義激活函數
- 定義模型
- 定義損失函數
- 訓練模型
- 小結
我們已經從上一節里了解了多層感知機的原理。下面,我們一起來動手實現一個多層感知機。首先導入實現所需的包或模塊。
import torch import numpy as np獲取和讀取數據
這里繼續使用Fashion-MNIST數據集。代碼和之前softmax回歸是一樣的,我們將使用多層感知機對圖像進行分類。
定義模型參數
我們在3(softmax回歸的從零開始實現)里已經介紹了,Fashion-MNIST數據集中圖像形狀為 28×2828 \times 2828×28,類別數為10。本節中我們依然使用長度為 28×28=78428 \times 28 = 78428×28=784 的向量表示每一張圖像。因此,輸入個數為784,輸出個數為10。實驗中,我們設超參數隱藏單元個數為256。
num_inputs, num_outputs, num_hiddens = 784, 10, 256W1 = torch.tensor(np.random.normal(0, 0.01, (num_inputs, num_hiddens)), dtype=torch.float,requires_grad=True) b1 = torch.zeros(num_hiddens, dtype=torch.float,requires_grad=True) W2 = torch.tensor(np.random.normal(0, 0.01, (num_hiddens, num_outputs)), dtype=torch.float,requires_grad=True) b2 = torch.zeros(num_outputs, dtype=torch.float,requires_grad=True)定義激活函數
這里我們使用基礎的max函數來實現ReLU,而非直接調用relu函數。
def relu(X):return torch.max(input=X, other=torch.tensor(0.0))定義模型
同softmax回歸一樣,我們通過view函數將每張原始圖像改成長度為num_inputs的向量。然后我們實現上一節中多層感知機的計算表達式。
def net(X):X = X.view((-1, num_inputs))H = relu(torch.matmul(X, W1) + b1)return torch.matmul(H, W2) + b2定義損失函數
為了得到更好的數值穩定性,我們直接使用PyTorch提供的包括softmax運算和交叉熵損失計算的函數。
loss = torch.nn.CrossEntropyLoss()訓練模型
訓練多層感知機的步驟和之前訓練softmax回歸的步驟沒什么區別。
小結
- 可以通過手動定義模型及其參數來實現簡單的多層感知機。
- 當多層感知機的層數較多時,本節的實現方法會顯得較煩瑣,例如在定義模型參數的時候。
總結
以上是生活随笔為你收集整理的深度学习pytorch--多层感知机(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软路由如何安装网吧路由器如何安装软件下载
- 下一篇: 深度学习pytorch--多层感知机(三