柚子快報(bào)激活碼778899分享:機(jī)器學(xué)習(xí)-MNIST
柚子快報(bào)激活碼778899分享:機(jī)器學(xué)習(xí)-MNIST
前言
MNIST是pytorch框架自帶的一個(gè)手寫(xiě)0-9分類(lèi)數(shù)據(jù)集,其中訓(xùn)練集5w張,測(cè)試集1w張,每張圖片是28*28像素的單通道圖片,本文將用全連接線性神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)兩種方式來(lái)實(shí)現(xiàn)對(duì)MNIST數(shù)據(jù)集的分類(lèi)。
所需要的三方庫(kù)
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader
from torchvision import datasets, transforms
import matplotlib.pyplot as plt
加載數(shù)據(jù)
MNIST數(shù)據(jù)集是pytorch自帶,可通過(guò)pytorch直接下載,在下載的同時(shí),通過(guò)transforms.ToTensor(),將數(shù)據(jù)轉(zhuǎn)成tensor數(shù)據(jù)。并使用DataLoader將數(shù)據(jù)分割成多個(gè)mini-batch,當(dāng)然這步可做可不做,本文的線性回歸方式并沒(méi)有使用DataLoader分割數(shù)據(jù),卷積神經(jīng)網(wǎng)絡(luò)使用了DataLoader分割數(shù)據(jù),已做對(duì)照。
def get_data():
training_data = datasets.MNIST('../../data', train=True, download=True, transform=transforms.ToTensor())
test_data = datasets.MNIST('../../data', train=False, download=True, transform=transforms.ToTensor())
training_data = DataLoader(training_data, batch_size=64, shuffle=True)
test_data = DataLoader(test_data, batch_size=64, shuffle=True)
return training_data, test_data
training_data, test_data = get_data()
線性神經(jīng)網(wǎng)絡(luò)
構(gòu)建線性神經(jīng)網(wǎng)絡(luò)模型
nn.Sequential 是 pytorch 庫(kù)中的一個(gè)類(lèi),它允許通過(guò)按順序堆疊多個(gè)層來(lái)創(chuàng)建神經(jīng)網(wǎng)絡(luò)模型。它提供了一種方便的方式來(lái)定義和組織神經(jīng)網(wǎng)絡(luò)的層。
每一張圖片都是單通道28 * 28的圖片。也就是說(shuō)一個(gè)一維矩陣就可以表示一張圖片,這張圖片有28 * 28個(gè)特征,因此第一個(gè)隱藏層的輸入為28 * 28,輸出則可自定義,只是確保之后的輸出和輸入要一一對(duì)應(yīng)。因?yàn)樵摂?shù)據(jù)集有10個(gè)分類(lèi),因此最后的輸出為10。并使用RuLU()作為激活函數(shù)。
def create_model():
class NeuralNetwork(nn.Module):
def __init__(self):
super(NeuralNetwork, self).__init__()
self.fc = nn.Sequential(
nn.Linear(in_features=28 * 28, out_features=512),
nn.ReLU(),
nn.Linear(in_features=512, out_features=256),
nn.ReLU(),
nn.Linear(in_features=256, out_features=128),
nn.ReLU(),
nn.Linear(in_features=128, out_features=64),
nn.ReLU(),
nn.Linear(in_features=64, out_features=32),
nn.ReLU(),
nn.Linear(in_features=32, out_features=16),
nn.ReLU
柚子快報(bào)激活碼778899分享:機(jī)器學(xué)習(xí)-MNIST
好文閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。