国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

三、MNIST手寫數(shù)字分類任務(wù)項目實戰(zhàn)

這篇具有很好參考價值的文章主要介紹了三、MNIST手寫數(shù)字分類任務(wù)項目實戰(zhàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

分類任務(wù)和回歸任務(wù)本質(zhì)上并沒有太大的區(qū)別,只是最終得到的結(jié)果和損失函數(shù)不同而已。
MNIST手寫數(shù)字分類任務(wù),最終得到的是10個值,也類似一個one-hot編碼格式,表示該圖片是0-9數(shù)字的概率,概率值最大的就是預(yù)測的最終結(jié)果
當(dāng)然標(biāo)簽也得是one-hot編碼格式,例如標(biāo)簽圖片是2,對應(yīng)0010000000

網(wǎng)絡(luò)模型:1*784,通過隱藏層轉(zhuǎn)化為128個特征,再轉(zhuǎn)換為10個輸出結(jié)果,最后連接一個Softmax轉(zhuǎn)化為每個類別的概率值

分類問題一般使用交叉熵?fù)p失函數(shù)

一、數(shù)據(jù)集預(yù)處理

數(shù)據(jù)集采用MNIST手寫數(shù)字,共計50,000張,每張圖片均是一個大小為28*28的手寫數(shù)字黑白單顏色通道照片,共784個像素點,[28,28,1]。

1,導(dǎo)包

from pathlib import Path
import requests
import pickle
import gzip
from matplotlib import pyplot
import numpy as np
import torch
import torch.nn.functional as F
from torch import nn
from torch.utils.data import TensorDataset
from torch.utils.data import DataLoader
from torch import optim

2,下載MNIST數(shù)據(jù)集并展示

數(shù)據(jù)集存放路徑為項目同級路徑下的data\mnist,數(shù)據(jù)集文件為mnist.pkl.gz
若不存在,則聯(lián)網(wǎng)下載;MNIST手寫數(shù)字?jǐn)?shù)據(jù)集免費下載鏈接
三、MNIST手寫數(shù)字分類任務(wù)項目實戰(zhàn)

2.1 下載數(shù)據(jù)集

DATA_PATH = Path("data")
PATH = DATA_PATH / "mnist"

PATH.mkdir(parents=True, exist_ok=True)

URL = "http://deeplearning.net/data/mnist/"
FILENAME = "mnist.pkl.gz"

if not (PATH / FILENAME).exists():
        content = requests.get(URL + FILENAME).content
        (PATH / FILENAME).open("wb").write(content)
        
with gzip.open((PATH / FILENAME).as_posix(), "rb") as f:
        ((x_train, y_train), (x_valid, y_valid), _) = pickle.load(f, encoding="latin-1")

2.2 展示一下其中訓(xùn)練集中的一個樣本

pyplot.imshow(x_train[2].reshape((28, 28)), cmap="gray")
print(x_train.shape)

三、MNIST手寫數(shù)字分類任務(wù)項目實戰(zhàn)

2.3 數(shù)據(jù)集轉(zhuǎn)換為tensor格式

通過map方法將數(shù)據(jù)集x_train, y_train, x_valid, y_valid轉(zhuǎn)換為tensor格式

x_train, y_train, x_valid, y_valid = map(
    torch.tensor, (x_train, y_train, x_valid, y_valid)
)
n, c = x_train.shape
x_train, x_train.shape, y_train.min(), y_train.max()
print(x_train, y_train)
"""
tensor([[0., 0., 0.,  ..., 0., 0., 0.],
        [0., 0., 0.,  ..., 0., 0., 0.],
        [0., 0., 0.,  ..., 0., 0., 0.],
        ...,
        [0., 0., 0.,  ..., 0., 0., 0.],
        [0., 0., 0.,  ..., 0., 0., 0.],
        [0., 0., 0.,  ..., 0., 0., 0.]]) tensor([5, 0, 4,  ..., 8, 4, 8])
"""
print(x_train.shape)
"""
torch.Size([50000, 784])
"""
print(y_train.min(), y_train.max())
"""
tensor(0) tensor(9)
"""

二、模型構(gòu)建

1,functional和Module模塊用法

模塊名稱 使用場景
torch.nn.functional 不帶參數(shù)的時候優(yōu)先使用,例如,一些激活函數(shù)、損失函數(shù)等
torch.nn.Module 模型中有帶學(xué)習(xí)參數(shù)(w和b)的時候使用,例如,一些卷積層、全連接層等

1.1 functional模塊用法

交叉熵?fù)p失函數(shù),不帶參數(shù),故優(yōu)先使用 torch.nn.functional下的cross_entropy
這里定義一個簡單的網(wǎng)絡(luò)model,僅有一層,將原先的[50000,784]轉(zhuǎn)化為[50000,10],最終得到[50000,10],即每條樣本僅含有10個特征,也就是0-9是個數(shù)字的概率值,共50000條數(shù)據(jù)樣本。故weights隨機(jī)初始化為[784,10]

自定義weights和bias

model(x_batchsize)即:xb.mm(weights) + bias
x_batchsize為[50000,784]
weights為[784,10]
bias為[1,10]
[50000,784] * [784,10] = [50000,10]
[50000,10] + [1,10] = [50000,10]

loss_func(model(x_batchsize), y_batchsize)
使用交叉熵?fù)p失函數(shù)的時候,需要傳入模型預(yù)測結(jié)果model(x_batchsize),和實際結(jié)果y_batchsize,最終會得到一個損失值loss_value

loss_func = torch.nn.functional.cross_entropy

def model(xb):
    return xb.mm(weights) + bias

batch_size = 64
x_batchsize = x_train[0:batch_size]  # a mini-batch from x
y_batchsize = y_train[0:batch_size]
weights = torch.randn([784, 10], dtype = torch.float,  requires_grad = True) 
bias = torch.zeros(10, requires_grad=True)

loss_value = loss_func(model(x_batchsize), y_batchsize)
print("loss_value is ",loss.item())
"""
loss_value is  15.282693862915039
"""

1.2 Module模塊用法

①繼承torch.nn.Module且在其構(gòu)造函數(shù)中需調(diào)用torch.nn.Module的構(gòu)造函數(shù)
②torch.nn.Module能夠利用autograd自動實現(xiàn)反向傳播
③Module中的可學(xué)習(xí)參數(shù)可以通過named_parameters()或者parameters()返回迭代器

class Mnist_NN(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.hidden1 = torch.nn.Linear(784, 128)
        self.hidden2 = torch.nn.Linear(128, 256)
        self.out  = torch.nn.Linear(256, 10)

    def forward(self, x):
        x = torch.nn.functional.relu(self.hidden1(x))
        x = torch.nn.functional.relu(self.hidden2(x))
        x = self.out(x)
        return x

net = Mnist_NN()
print(net)

"""
Mnist_NN(
  (hidden1): Linear(in_features=784, out_features=128, bias=True)
  (hidden2): Linear(in_features=128, out_features=256, bias=True)
  (out): Linear(in_features=256, out_features=10, bias=True)
)
"""

參看模型中的權(quán)重參數(shù)及偏置項,很明顯可以看到pytorch已經(jīng)將權(quán)重參數(shù)weights和bias進(jìn)行了初始化

for name, parameter in net.named_parameters():
    print(name, parameter,parameter.size())

"""
hidden1.weight Parameter containing:
tensor([[-0.0103, -0.0190, -0.0043,  ...,  0.0030, -0.0281, -0.0044],
        [ 0.0266,  0.0323,  0.0084,  ...,  0.0356, -0.0234, -0.0319],
        [ 0.0097,  0.0259, -0.0062,  ..., -0.0251, -0.0205,  0.0192],
        ...,
        [ 0.0027,  0.0076, -0.0102,  ...,  0.0129, -0.0046,  0.0261],
        [ 0.0086, -0.0191, -0.0071,  ...,  0.0031,  0.0103,  0.0261],
        [ 0.0283,  0.0107, -0.0344,  ..., -0.0068, -0.0294,  0.0064]],
       requires_grad=True) torch.Size([128, 784])
hidden1.bias Parameter containing:
tensor([ 0.0216, -0.0272,  0.0331, -0.0009,  0.0174,  0.0257,  0.0065,  0.0003,
         0.0300, -0.0152, -0.0201, -0.0261,  0.0050,  0.0260, -0.0282,  0.0345,
        -0.0012,  0.0142,  0.0331, -0.0031,  0.0273, -0.0191, -0.0110, -0.0095,
         0.0284, -0.0113,  0.0225,  0.0055, -0.0091, -0.0120, -0.0197,  0.0104,
         0.0045, -0.0280,  0.0257,  0.0159,  0.0349, -0.0131,  0.0108,  0.0218,
         0.0185, -0.0068, -0.0295,  0.0322,  0.0290, -0.0259,  0.0168,  0.0019,
        -0.0259, -0.0175,  0.0344, -0.0213, -0.0316,  0.0299, -0.0163, -0.0270,
         0.0191,  0.0266,  0.0115,  0.0094, -0.0097, -0.0059, -0.0014,  0.0002,
         0.0303, -0.0142, -0.0020,  0.0115, -0.0350,  0.0063,  0.0197,  0.0349,
         0.0066,  0.0145,  0.0126, -0.0327,  0.0066, -0.0247, -0.0279, -0.0338,
        -0.0083, -0.0174,  0.0040,  0.0266,  0.0186, -0.0242,  0.0202,  0.0080,
         0.0162,  0.0340,  0.0081,  0.0107, -0.0025, -0.0291,  0.0274,  0.0278,
        -0.0067, -0.0251, -0.0070, -0.0098, -0.0274,  0.0311, -0.0184, -0.0021,
         0.0349,  0.0077, -0.0178,  0.0102,  0.0209,  0.0181,  0.0215, -0.0017,
         0.0202,  0.0239, -0.0071, -0.0115,  0.0295,  0.0246,  0.0123,  0.0175,
        -0.0263, -0.0001,  0.0025,  0.0092,  0.0010, -0.0005, -0.0195, -0.0303],
       requires_grad=True) torch.Size([128])
hidden2.weight Parameter containing:
tensor([[-0.0695,  0.0737,  0.0376,  ..., -0.0743,  0.0488, -0.0577],
        [ 0.0853, -0.0837, -0.0820,  ..., -0.0524, -0.0631, -0.0884],
        [ 0.0197,  0.0445,  0.0115,  ...,  0.0682, -0.0595,  0.0394],
        ...,
        [ 0.0714, -0.0377,  0.0020,  ..., -0.0712, -0.0086,  0.0522],
        [ 0.0236, -0.0035,  0.0493,  ..., -0.0229,  0.0803,  0.0179],
        [ 0.0659, -0.0182, -0.0769,  ..., -0.0166,  0.0726, -0.0735]],
       requires_grad=True) torch.Size([256, 128])
hidden2.bias Parameter containing:
tensor([ 0.0183,  0.0099, -0.0448,  0.0838, -0.0734, -0.0142, -0.0436, -0.0154,
        -0.0244, -0.0263,  0.0354,  0.0448, -0.0390,  0.0124, -0.0233, -0.0495,
         0.0037, -0.0407, -0.0827, -0.0067, -0.0540,  0.0819,  0.0035,  0.0408,
         0.0589,  0.0687, -0.0075,  0.0123, -0.0455,  0.0319, -0.0565, -0.0632,
        -0.0445, -0.0497, -0.0884,  0.0604, -0.0763,  0.0799, -0.0792, -0.0108,
         0.0238, -0.0842, -0.0196,  0.0354,  0.0795, -0.0863,  0.0022, -0.0864,
         0.0042, -0.0249,  0.0077,  0.0880, -0.0154,  0.0281, -0.0115,  0.0725,
         0.0870,  0.0301,  0.0606, -0.0185,  0.0663,  0.0699,  0.0871,  0.0118,
        -0.0254, -0.0482,  0.0105, -0.0523, -0.0479, -0.0275, -0.0284, -0.0720,
         0.0261, -0.0533, -0.0619,  0.0075,  0.0054, -0.0535, -0.0180,  0.0242,
        -0.0596,  0.0572, -0.0202, -0.0387, -0.0463,  0.0692, -0.0386,  0.0561,
        -0.0243, -0.0506, -0.0881,  0.0110, -0.0650, -0.0861, -0.0495,  0.0682,
        -0.0283,  0.0833,  0.0398, -0.0657,  0.0555, -0.0533,  0.0658,  0.0737,
         0.0540, -0.0451,  0.0682, -0.0578,  0.0440, -0.0437, -0.0654,  0.0751,
        -0.0745,  0.0042, -0.0147, -0.0569, -0.0623,  0.0775,  0.0091,  0.0279,
        -0.0501,  0.0583,  0.0678,  0.0089, -0.0820,  0.0817, -0.0344,  0.0255,
        -0.0555,  0.0547,  0.0685,  0.0306, -0.0300,  0.0403, -0.0279,  0.0202,
        -0.0820,  0.0615, -0.0076, -0.0441,  0.0326,  0.0401, -0.0319,  0.0820,
         0.0206, -0.0017,  0.0708,  0.0190,  0.0230, -0.0216,  0.0568, -0.0080,
        -0.0383, -0.0544, -0.0615,  0.0631, -0.0607,  0.0278, -0.0583, -0.0352,
         0.0366, -0.0495,  0.0379, -0.0525, -0.0833,  0.0035, -0.0335,  0.0035,
         0.0511,  0.0351, -0.0740, -0.0139,  0.0403,  0.0526, -0.0718,  0.0162,
        -0.0850,  0.0107, -0.0147, -0.0585,  0.0393,  0.0059,  0.0435,  0.0786,
        -0.0692,  0.0510, -0.0684,  0.0609, -0.0507,  0.0758, -0.0459, -0.0352,
         0.0209,  0.0770,  0.0499, -0.0505,  0.0456,  0.0666,  0.0681,  0.0481,
        -0.0462,  0.0185, -0.0787,  0.0354, -0.0553, -0.0860,  0.0690, -0.0738,
        -0.0327, -0.0022,  0.0376,  0.0795, -0.0759,  0.0221, -0.0463, -0.0018,
        -0.0396,  0.0051,  0.0354, -0.0525,  0.0017, -0.0321,  0.0224,  0.0812,
         0.0007,  0.0191,  0.0600, -0.0778,  0.0328,  0.0567, -0.0762,  0.0303,
         0.0458, -0.0680, -0.0247,  0.0681,  0.0281, -0.0423, -0.0765, -0.0693,
         0.0539,  0.0803,  0.0544, -0.0693,  0.0676,  0.0337, -0.0803, -0.0588,
        -0.0669,  0.0054,  0.0858,  0.0852,  0.0579,  0.0029,  0.0217,  0.0020],
       requires_grad=True) torch.Size([256])
out.weight Parameter containing:
tensor([[-0.0123, -0.0068, -0.0562,  ...,  0.0388, -0.0082, -0.0343],
        [ 0.0063, -0.0397,  0.0095,  ...,  0.0393,  0.0570,  0.0350],
        [-0.0014, -0.0031,  0.0413,  ...,  0.0558, -0.0057,  0.0295],
        ...,
        [-0.0041, -0.0314,  0.0068,  ...,  0.0051, -0.0595, -0.0526],
        [ 0.0240,  0.0077, -0.0286,  ...,  0.0616, -0.0109,  0.0282],
        [-0.0037,  0.0257,  0.0358,  ...,  0.0238, -0.0070, -0.0130]],
       requires_grad=True) torch.Size([10, 256])
out.bias Parameter containing:
tensor([-0.0253, -0.0390,  0.0220, -0.0050, -0.0236,  0.0182, -0.0462,  0.0092,
        -0.0282,  0.0165], requires_grad=True) torch.Size([10])
"""

三、數(shù)據(jù)集加載

1,TensorDataset和DataLoader模塊

使用Dataset加載數(shù)據(jù)集x_train和y_train
再使用DataLoader進(jìn)行分batch_size使用數(shù)據(jù)

train_dataset = TensorDataset(x_train, y_train)
train_dataloader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)

valid_dataset = TensorDataset(x_valid, y_valid)
valid_dataloader = DataLoader(valid_dataset, batch_size=batch_size * 2)

可以定義成一個函數(shù)進(jìn)行簡化操作,與上面等同

def get_data(train_ds, valid_ds, bs):
    return (
        DataLoader(train_ds, batch_size=bs, shuffle=True),
        DataLoader(valid_ds, batch_size=bs * 2),
    )

2,搭建模型函數(shù)

class Mnist_NN(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.hidden1 = torch.nn.Linear(784, 128)
        self.hidden2 = torch.nn.Linear(128, 256)
        self.out  = torch.nn.Linear(256, 10)

    def forward(self, x):
        x = torch.nn.functional.relu(self.hidden1(x))
        x = torch.nn.functional.relu(self.hidden2(x))
        x = self.out(x)
        return x


def get_model():
    model = Mnist_NN()
    return model, optim.SGD(model.parameters(), lr=0.001)

3,模型訓(xùn)練

model.train(),一般在訓(xùn)練模型時加上該函數(shù),這樣會正常使用Batch Normalization和Dropout
model.eval(),一般在測試的時候加上該函數(shù),這樣就不會使用Batch Normalization和Dropout,只需要得到結(jié)果,不需要加其他的東西

def fit(steps, model, loss_func, opt, train_dl, valid_dl):
    for step in range(steps):
        model.train()
        for xb, yb in train_dl:
            loss_batch(model, loss_func, xb, yb, opt)

        model.eval()
        with torch.no_grad():
            losses, nums = zip(
                *[loss_batch(model, loss_func, xb, yb) for xb, yb in valid_dl]
            )
        val_loss = np.sum(np.multiply(losses, nums)) / np.sum(nums)
        print('當(dāng)前step:'+str(step), '驗證集損失:'+str(val_loss))

4,計算損失

def loss_batch(model, loss_func, xb, yb, opt=None):
    loss = loss_func(model(xb), yb)

    if opt is not None:
        loss.backward()
        opt.step()
        opt.zero_grad()

    return loss.item(), len(xb)

四、模型訓(xùn)練

三行搞定!

get_data(train_dataset, valid_dataset, batch_size),通過DataLoader把數(shù)據(jù)分成多個batch
get_model(),拿到模型和優(yōu)化器
fit(25, model, loss_func, opt, train_dl, valid_dl),迭代25次,損失函數(shù)loss_func,opt優(yōu)化器,以及數(shù)據(jù)集train_dl和valid_dl

train_dl, valid_dl = get_data(train_dataset, valid_dataset, batch_size)
model, opt = get_model()
fit(25, model, loss_func, opt, train_dl, valid_dl)
"""
當(dāng)前step:0 驗證集損失:2.273124300003052
當(dāng)前step:1 驗證集損失:2.236217007827759
當(dāng)前step:2 驗證集損失:2.178324108505249
當(dāng)前step:3 驗證集損失:2.084301624298096
當(dāng)前step:4 驗證集損失:1.9348833778381347
當(dāng)前step:5 驗證集損失:1.714909873199463
當(dāng)前step:6 驗證集損失:1.4460701025009155
當(dāng)前step:7 驗證集損失:1.1931273698806764
當(dāng)前step:8 驗證集損失:0.999380665397644
當(dāng)前step:9 驗證集損失:0.8610858593940734
"""

五、完整代碼

from pathlib import Path
import requests
import pickle
import gzip
from matplotlib import pyplot
import numpy as np
import torch
import torch.nn.functional as F
from torch import nn
from torch.utils.data import TensorDataset
from torch.utils.data import DataLoader
from torch import optim

DATA_PATH = Path("data")
PATH = DATA_PATH / "mnist"

PATH.mkdir(parents=True, exist_ok=True)

URL = "http://deeplearning.net/data/mnist/"
FILENAME = "mnist.pkl.gz"

if not (PATH / FILENAME).exists():
        content = requests.get(URL + FILENAME).content
        (PATH / FILENAME).open("wb").write(content)
        
with gzip.open((PATH / FILENAME).as_posix(), "rb") as f:
        ((x_train, y_train), (x_valid, y_valid), _) = pickle.load(f, encoding="latin-1")
        

        
#展示其中一個樣本
#pyplot.imshow(x_train[2].reshape((28, 28)), cmap="gray")
#print(x_train.shape)


x_train, y_train, x_valid, y_valid = map(
    torch.tensor, (x_train, y_train, x_valid, y_valid)
)
n, c = x_train.shape
x_train, x_train.shape, y_train.min(), y_train.max()
#print(x_train, y_train)
#print(x_train.shape)
#print(y_train.min(), y_train.max())

batch_size = 64
loss_func = torch.nn.functional.cross_entropy


def get_data(train_ds, valid_ds, bs):
    return (
        DataLoader(train_ds, batch_size=bs, shuffle=True),
        DataLoader(valid_ds, batch_size=bs * 2),
    )


def fit(steps, model, loss_func, opt, train_dl, valid_dl):
    for step in range(steps):
        model.train()
        for xb, yb in train_dl:
            loss_batch(model, loss_func, xb, yb, opt)

        model.eval()
        with torch.no_grad():
            losses, nums = zip(
                *[loss_batch(model, loss_func, xb, yb) for xb, yb in valid_dl]
            )
        val_loss = np.sum(np.multiply(losses, nums)) / np.sum(nums)
        print('當(dāng)前step:'+str(step), '驗證集損失:'+str(val_loss))
   
        
class Mnist_NN(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.hidden1 = torch.nn.Linear(784, 128)
        self.hidden2 = torch.nn.Linear(128, 256)
        self.out  = torch.nn.Linear(256, 10)

    def forward(self, x):
        x = torch.nn.functional.relu(self.hidden1(x))
        x = torch.nn.functional.relu(self.hidden2(x))
        x = self.out(x)
        return x
        
        
def get_model():
    model = Mnist_NN()
    return model, optim.SGD(model.parameters(), lr=0.001)


def loss_batch(model, loss_func, xb, yb, opt=None):
    loss = loss_func(model(xb), yb)

    if opt is not None:
        loss.backward()
        opt.step()
        opt.zero_grad()

    return loss.item(), len(xb)
        

train_dl, valid_dl = get_data(train_dataset, valid_dataset, batch_size)
model, opt = get_model()
fit(10, model, loss_func, opt, train_dl, valid_dl)

三、MNIST手寫數(shù)字分類任務(wù)項目實戰(zhàn)文章來源地址http://www.zghlxwxcb.cn/news/detail-493021.html

到了這里,關(guān)于三、MNIST手寫數(shù)字分類任務(wù)項目實戰(zhàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 人工智能TensorFlow MNIST手寫數(shù)字識別——實戰(zhàn)篇

    人工智能TensorFlow MNIST手寫數(shù)字識別——實戰(zhàn)篇

    上期文章TensorFlow手寫數(shù)字-訓(xùn)練篇,我們訓(xùn)練了我們的神經(jīng)網(wǎng)絡(luò),本期使用上次訓(xùn)練的模型,來識別手寫數(shù)字(本期構(gòu)建TensorFlow神經(jīng)網(wǎng)絡(luò)代碼為上期文章分享代碼) http://scs.ryerson.ca/~aharley/vis/conv/ 0、插入第三方庫 1、圖片處理函數(shù)

    2024年02月15日
    瀏覽(38)
  • [深度學(xué)習(xí)實戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實戰(zhàn)(下)[Mnist手寫數(shù)字圖像識別]

    [深度學(xué)習(xí)實戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實戰(zhàn)(下)[Mnist手寫數(shù)字圖像識別]

    PyTorch——開源的Python機(jī)器學(xué)習(xí)庫 ??首先感謝所有點開本文的朋友們!基于PyTorch的深度學(xué)習(xí)實戰(zhàn)可能要告一段落了。本想著再寫幾篇關(guān)于 PyTorch神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí) 的文章來著,可無奈項目時間緊任務(wù)重,要求 短時間內(nèi)出圖并做好參數(shù)擬合 。所以只得轉(zhuǎn)戰(zhàn) Matlab 編程,框架舊

    2024年02月16日
    瀏覽(27)
  • 清華青年AI自強(qiáng)作業(yè)hw3_1:用線性回歸模型擬合MNIST手寫數(shù)字分類

    清華青年AI自強(qiáng)作業(yè)hw3_1:用線性回歸模型擬合MNIST手寫數(shù)字分類

    一起學(xué)AI系列博客:目錄索引 hw3_1:用線性回歸模型擬合MNIST手寫數(shù)字分類 初步體驗Tensorflow編程環(huán)境 體會用回歸模型網(wǎng)絡(luò)擬合效果 嘗試后發(fā)現(xiàn)hw3_1/hw3_3的參考代碼為TF1.x框架代碼,升級到TF2.x框架多為不便(升級踩坑記錄),于是采用TF2.x中的keras框架重新寫了一遍。 思路分析

    2024年02月10日
    瀏覽(21)
  • pytorch-神經(jīng)網(wǎng)絡(luò)-手寫數(shù)字分類任務(wù)

    pytorch-神經(jīng)網(wǎng)絡(luò)-手寫數(shù)字分類任務(wù)

    Mnist分類任務(wù): 網(wǎng)絡(luò)基本構(gòu)建與訓(xùn)練方法,常用函數(shù)解析 torch.nn.functional模塊 nn.Module模塊 讀取Mnist數(shù)據(jù)集 會自動進(jìn)行下載 注意數(shù)據(jù)需轉(zhuǎn)換成tensor才能參與后續(xù)建模訓(xùn)練 torch.nn.functional 很多層和函數(shù)在這里都會見到 torch.nn.functional中有很多功能,后續(xù)會常用的。那什么時候使

    2024年02月09日
    瀏覽(30)
  • 在樹莓派上實現(xiàn)numpy的LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)做圖像分類,加載pytorch的模型參數(shù),推理mnist手寫數(shù)字識別

    在樹莓派上實現(xiàn)numpy的LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)做圖像分類,加載pytorch的模型參數(shù),推理mnist手寫數(shù)字識別

    這幾天又在玩樹莓派,先是搞了個物聯(lián)網(wǎng),又在嘗試在樹莓派上搞一些簡單的神經(jīng)網(wǎng)絡(luò),這次搞得是LSTM識別mnist手寫數(shù)字識別 訓(xùn)練代碼在電腦上,cpu就能訓(xùn)練,很快的: 然后需要自己在dataset里導(dǎo)出一些圖片:我保存在了mnist_pi文件夾下,“_”后面的是標(biāo)簽,主要是在pc端導(dǎo)出

    2024年02月07日
    瀏覽(26)
  • 在樹莓派上實現(xiàn)numpy的conv2d卷積神經(jīng)網(wǎng)絡(luò)做圖像分類,加載pytorch的模型參數(shù),推理mnist手寫數(shù)字識別,并使用多進(jìn)程加速

    在樹莓派上實現(xiàn)numpy的conv2d卷積神經(jīng)網(wǎng)絡(luò)做圖像分類,加載pytorch的模型參數(shù),推理mnist手寫數(shù)字識別,并使用多進(jìn)程加速

    這幾天又在玩樹莓派,先是搞了個物聯(lián)網(wǎng),又在嘗試在樹莓派上搞一些簡單的神經(jīng)網(wǎng)絡(luò),這次搞得是卷積識別mnist手寫數(shù)字識別 訓(xùn)練代碼在電腦上,cpu就能訓(xùn)練,很快的: 然后需要自己在dataset里導(dǎo)出一些圖片:我保存在了mnist_pi文件夾下,“_”后面的是標(biāo)簽,主要是在pc端導(dǎo)

    2024年02月07日
    瀏覽(33)
  • 【Pytorch+torchvision】MNIST手寫數(shù)字識別

    【Pytorch+torchvision】MNIST手寫數(shù)字識別

    深度學(xué)習(xí)入門項目,含代碼詳細(xì)解析 在本文中,我們將在 PyTorch 中構(gòu)建一個簡單的卷積神經(jīng)網(wǎng)絡(luò),并使用 MNIST數(shù)據(jù)集 訓(xùn)練它識別手寫數(shù)字。?MNIST包含70,000張手寫數(shù)字圖像: 60,000張用于培訓(xùn),10,000張用于測試。圖像是 灰度(即通道數(shù)為1) , 28x28像素 ,并且居中的,以減少預(yù)

    2024年02月14日
    瀏覽(20)
  • FPGA實現(xiàn)mnist手寫數(shù)字識別(軟件部分)

    FPGA實現(xiàn)mnist手寫數(shù)字識別(軟件部分)

    使用的環(huán)境:tf1.12,具體配置見here: 首先打開環(huán)境tf1.12,,再安裝以下的包: opencv 在這里下載“l(fā)inux-64/opencv3-3.1.0-py36_0.tar.bz2”,通過共享文件夾copy到download文件夾中,在文件夾下打開終端,輸入以下命令進(jìn)行安裝: matplotlib(時刻注意是py36) Pillow(貌似不用了,上面已經(jīng)安

    2023年04月15日
    瀏覽(28)
  • pytorch 入門 (三)案例一:mnist手寫數(shù)字識別

    pytorch 入門 (三)案例一:mnist手寫數(shù)字識別

    本文為??小白入門Pytorch內(nèi)部限免文章 ?? 本文為??小白入門Pytorch中的學(xué)習(xí)記錄博客 ?? 參考文章:【小白入門Pytorch】mnist手寫數(shù)字識別 ?? 原作者:K同學(xué)啊 ? 如果設(shè)備上支持GPU就使用GPU,否則使用CPU 使用dataset下載MNIST數(shù)據(jù)集,并劃分好訓(xùn)練集與測試集 使用dataloader加載數(shù)

    2024年02月07日
    瀏覽(26)
  • 用PyTorch實現(xiàn)MNIST手寫數(shù)字識別(最新,非常詳細(xì))

    用PyTorch實現(xiàn)MNIST手寫數(shù)字識別(最新,非常詳細(xì))

    本文基于 PyTorch 框架,采用 CNN卷積神經(jīng)網(wǎng)絡(luò) 實現(xiàn) MNIST 手寫數(shù)字識別,僅在 CPU 上運(yùn)行。 已分別實現(xiàn)使用Linear純線性層、CNN卷積神經(jīng)網(wǎng)絡(luò)、Inception網(wǎng)絡(luò)、和Residual殘差網(wǎng)絡(luò)四種結(jié)構(gòu)對MNIST數(shù)據(jù)集進(jìn)行手寫數(shù)字識別,并對其識別準(zhǔn)確率進(jìn)行比較分析。(另外三種還未發(fā)布) 看完

    2024年02月06日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包