多層感知機的簡潔實現

2021-10-24 08:49:05 字數 1522 閱讀 3595

《動手學深度學習pytorch》部分學習筆記,僅用作自己複習。

使用gluon來實現上一節中的多層感知機。

import torch

from torch import nn

from torch.nn import init

import numpy as np

import sys

import d2lzh_pytorch as d2l

和softmax回歸唯⼀的不同在於,我們多加了⼀個全連線層作為隱藏層。

# 輸入、輸出、隱藏層。它的隱藏單元個數為256。

num_inputs, num_outputs, num_hiddens = 784, 10, 256

# 使用relu函式作為啟用函式。

# flatten就是將2d的特徵圖壓扁為1d的特徵向量,用於全連線層的輸入。

net = nn.sequential(

d2l.flattenlayer(),

nn.linear(num_inputs, num_hiddens),

nn.relu(),

nn.linear(num_hiddens, num_outputs),

)for params in net.parameters():

# 初始化

init.normal_(params, mean=0, std=0.01)

batch_size = 256

# 載入資料集

train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)

# 交叉損失函式

loss = torch.nn.crossentropyloss()

# 這里使用的是pytorch的sgd⽽不是d2lzh_pytorch里面的sgd

# 不存在學習率看起來很大的問題了了

optimizer = torch.optim.sgd(net.parameters(), lr=0.5)

num_epochs = 5

# 訓練

d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs,batch_size, none, none, optimizer)

輸出:

epoch 1, loss 0.0030, train acc 0.712, test acc 0.744

epoch 2, loss 0.0019, train acc 0.823, test acc 0.821

epoch 3, loss 0.0017, train acc 0.844, test acc 0.842

epoch 4, loss 0.0015, train acc 0.856, test acc 0.842

epoch 5, loss 0.0014, train acc 0.864, test acc 0.818

小結

3 10 多層感知機的簡潔實現

學習 import torch from torch import nn from torch.nn import init import numpy as np import sys import d2lzh pytorch as d2l加了乙個全連線層作為隱藏層。它的隱藏單元個數為256,並使用...

tensorflow實現多層感知機

tensorflow 多層感知機識別手寫數字 匯入資料 import tensorflow as tf import tensorflow.tutorials.minist.input data as input data minist input data.read datasets mnist ...

多層感知機

1 單輸出多層感知機 單輸出多層感知機 圖中各變數滿足公式 假如現在有乙個樣本 x 1,x2 t 用該樣本訓練網路時,網路優化的目標為lossfun最小。lossfun是乙個關於變數w和v多元函式。網路的訓練又變成多元函式求極值的問題。求v1的梯度 同理可得v i的梯度 求w11的梯度 同理,可得w...