神经网络做MNIST手写数字识别代码

编程入门 行业动态 更新时间:2024-10-10 05:23:48

<a href=https://www.elefans.com/category/jswz/34/1769690.html style=神经网络做MNIST手写数字识别代码"/>

神经网络做MNIST手写数字识别代码

1.MNIST数据集

MNIST数据集是由0 到9 的手写数字图像构成的。训练图像有6 万张,测试图像有1 万张每一张图片都有对应的标签数字。因此这个测试集就可以作为验证集使用。

MNIST的图像,每张图片是包含28 像素× 28 像素的灰度图像(1 通道),各个像素的取值在0 到255 之间。每张图片都由一个28 ×28 的矩阵表示,每张图片都由一个784 维的向量表示(28*28=784)。

详细介绍参考:/

2.用神经网络做MNIST手写数字识别

模型结构:

模型如图所示,输入二维张量展开成一维。再经过若干次组合的,Linear层和激活函数层,最后返回。
在模型使用时,后面接到交叉熵损失函数上。所以模型的最后一层不做激活。因为本身交叉熵损失函数带有激活功能。

3.代码实现(python+pytorch)

分四个步骤:
第一步:数据集准备和加载;第二步:设计模型;第三步:构建损失函数和优化器;第四步:模型的训练和验证

因pytorc中封装了很多模块。所以我们在实现时,更多的是了解各个模块的功能,以便组合使用。

import torch
from torchvision import transforms
from torchvision import datasets
from torch.utils.data import DataLoader
import torch.optim as optim
import torch.nn.functional as F
import matplotlib.pyplot as pltbatch_size = 64transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.1307),(0.3081)) #两个参数,平均值和标准差])train_dataset = datasets.MNIST(root="../dataset/mnist/",train= True,download= True,transform= transform
)train_loader = DataLoader(train_dataset,shuffle = True,batch_size = batch_size)test_dataset = datasets.MNIST(root="../dataset/mnist/",train=False,download=True,transform=transform
)test_loder = DataLoader(test_dataset,shuffle = True,batch_size = batch_size)class Net(torch.nn.Module):def __init__(self):super(Net,self).__init__()self.linear1 = torch.nn.Linear(784,512)self.linear2 = torch.nn.Linear(512,256)self.linear3 = torch.nn.Linear(256,128)self.linear4 = torch.nn.Linear(128,64)self.linear5 = torch.nn.Linear(64,10)def forward(self,x):x = x.view(-1,784) # 改变张量形状。把输入展开成若干行,784列x = F.leaky_relu(self.linear1(x))x = F.leaky_relu(self.linear2(x))x = F.leaky_relu(self.linear3(x))x = F.leaky_relu(self.linear4(x))return self.linear5(x<

更多推荐

神经网络做MNIST手写数字识别代码

本文发布于:2024-02-07 01:57:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1752236.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:神经网络   代码   数字   MNIST

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!