日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

深度学习pytorch--多层感知机(二)

發布時間:2023/12/3 pytorch 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习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--多层感知机(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。