导读

MNIST手写数字数据集作为深度学习入门的数据集是我们经常都会使用到的,包含了0~9共10个数字类别的图片,每张图片的大小为28X28,一共包含了60000张训练集图片和10000张测试集图片。

使用PaddlePadlle进行手写数字识别

  • 导包
import paddle
from paddle.vision.transforms import Normalize
  • 加载MNIST数据集
#数据的归一化处理
transform = Normalize(mean=[127.5],std=[127.5],data_format="CHW")#加载MNIST的训练数据集
train_mnist_dataset = paddle.vision.datasets.MNIST(mode="train",transform=transform)
#加载MNIST的测试数据集
test_mnist_dataset = paddle.vision.datasets.MNIST(mode="test",transform=transform)
  • 展示手写数字的图片
import numpy as np
import matplotlib.pyplot as plt#获取MNIST数据的图片和对应的标签
mnist_image,mnist_label = train_mnist_dataset[0][0],train_mnist_dataset[0][1]
#调整MNIST图片的大小
mnist_image = mnist_image.reshape((28,28))
plt.figure(figsize=(2,2))
plt.imshow(mnist_image,cmap=plt.cm.binary)

  • 使用paddlepaddle定义神经网络模型

这里我们先使用一个比较简单的3层感知机来构建一个模型,第一层全连接层的输出是256,第二层全连接层的输出是128,第三层全连接层的输出是10,正好对应10个不同的数字类别

class PerceptronMNIST(paddle.nn.Layer):def __init__(self,in_features,classes_num):super(PerceptronMNIST,self).__init__()#将输出数据的shape由(-1,1,28,28)变为(-1,784)self.flatten = paddle.nn.Flatten()#感知机的第一层全连接层self.fc1 = paddle.nn.Linear(in_features=in_features,out_features=256)#激活函数self.relu1 = paddle.nn.ReLU()#感知机的第二层全连接层self.fc2 = paddle.nn.Linear(in_features=256,out_features=128)#激活函数self.relu2 = paddle.nn.ReLU()#感知机的第三层全连接层self.fc3 = paddle.nn.Linear(in_features=128,out_features=classes_num)def forward(self,x):x = self.flatten(x)x = self.fc1(x)x = self.relu1(x)x = self.fc2(x)x = self.relu2(x)x = self.fc3(x)return x
  • 打印网络模型的结构
    #使用PaddlePaddle封装模型model = paddle.Model(PerceptronMNIST(in_features=28*28,classes_num=10))#输出网络的结构model.summary((-1,1,28,28))

  • 定义优化算法和Loss
#配置模型
model.prepare(paddle.optimizer.Adam(parameters=model.parameters()),#使用Adam优化算法paddle.nn.CrossEntropyLoss(),#使用CrossEntropyLoss作为损失函数paddle.metric.Accuracy())#使用Accuracy计算精度
  • 训练模型
model.fit(train_mnist_dataset,#设置训练数据epochs=10,          #定义训练的epochsbatch_size=128,     #设置batch_sizeverbose=1)          #设置日志的输出格式

  • 评估模型
model.evaluate(test_mnist_dataset,verbose=1)

  • 模型预测
results = model.predict(test_mnist_dataset)
#获取概率最大的label
pred_label = np.argsort(results)
print("图片的预测标签为:{}".format(pred_label[0][0][-1][0]))

使用paddlepaddle进行手写数字识别相关推荐

  1. 深度学习数字仪表盘识别_【深度学习系列】手写数字识别实战

    上周在搜索关于深度学习分布式运行方式的资料时,无意间搜到了paddlepaddle,发现这个框架的分布式训练方案做的还挺不错的,想跟大家分享一下.不过呢,这块内容太复杂了,所以就简单的介绍一下padd ...

  2. PaddlePaddle——手写数字识别DEMO

    https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/02_paddle2.0_develop/01_quick_start_cn. ...

  3. 动手学PaddlePaddle(4):MNIST(手写数字识别)

    本次练习将使用 PaddlePaddle 来实现三种不同的分类器,用于识别手写数字.三种分类器所实现的模型分别为 Softmax 回归.多层感知器.卷积神经网络. 您将学会 实现一个基于Softmax ...

  4. 基于Paddle的计算机视觉入门教程——第7讲 实战:手写数字识别

    B站教程地址 https://www.bilibili.com/video/BV18b4y1J7a6/ 任务介绍 手写数字识别是计算机视觉的一个经典项目,因为手写数字的随机性,使用传统的计算机视觉技术 ...

  5. 基于飞桨实现手写数字识别2

    参考课程笔记:https://aistudio.baidu.com/aistudio/projectdetail/728143 上篇https://mp.csdn.net/console/editor ...

  6. Paddle实践:手写数字识别

    文章目录 前言 1. Paddle手写数字识别过程 2. Paddle手写数字识别训练与推理过程实现 总结 参考 前言 趁着国庆尾巴,复习了Paddle框架进行深度学习实践:手写数字识别,这里分享下模 ...

  7. 基于LeNet实现拍摄手写数字识别

    文章目录 1 实验内容 2 实验原理 LeNet: 3 具体实现 基于PaddlePaddle实现LeNet 加载数据: 建立模型: 模型训练: 模型测试: 基于Pytorch实现LeNet5 加载数 ...

  8. 深度学习(手写数字识别)

    本程序采用百度paddlepaddle深度学习框架,并在百度AI Studio平台上运行 目录 1 实验内容 2 实验流程 3 DNN模型 4 LeNet 模型 4.1 LeNet-1模型 4.2 L ...

  9. 深蓝学院第三章:基于卷积神经网络(CNN)的手写数字识别实践

    参看之前篇章的用全连接神经网络去做手写识别:https://blog.csdn.net/m0_37957160/article/details/114105389?spm=1001.2014.3001 ...

最新文章

  1. 界面之下:还原真实的MV*模式
  2. 带你一分钟理解闭包--js面向对象编程
  3. UA OPTI544 量子光学8 2-level system approximation的population rate equation模型
  4. matlab内存不足问题
  5. linux是只读添加 来覆盖,Linux之指令 重定向 文件覆盖和文件追加
  6. CSS基础「五」定位
  7. OpenCV笔记:pyrDown()函数和pryUp()函数的使用
  8. 突发奇想-怎么写一个死锁?
  9. 实验1 VLAN负载均衡
  10. 一本快速入门ARM64体系结构的编程书
  11. BIM标准化系列写作思路
  12. 新项目六之集成新版友盟统计
  13. Windows查看ssh公钥方法
  14. Python爬虫实战四之抓取淘宝MM照片
  15. Android 屏幕旋转 全解析
  16. PCIe扫盲——PCIe简介
  17. HTML+JS+CSS筋斗云导航栏效果
  18. concat特征融合_小目标检测文献相关(特征融合)
  19. 关于IBM的X3200M3型IMM和UEFI的问题解决方案汇总
  20. 2021澳洲wace高考成绩查询,官宣!2019澳洲WACE高考日程表发布!

热门文章

  1. docker执行权限问题Got permission denied while trying to connect to the Docker daemon socket
  2. Jboot框架的使用
  3. CI持续集成与软件测试
  4. 考研计算机专业英语面试自我介绍,计算机研究生面试英文自我介绍
  5. 软件工程——软件管理
  6. 恒峰祥可信讲述拼多多电商店铺推广和商品推广有什么不同
  7. 利用APPium获取自动浏览获取喵币
  8. 锐龙R3-3300X和i5-9400f哪个好?
  9. 网易互娱招聘 | 遇见offer之就要圆你的大厂梦
  10. 飞浆AI studio人工智能课程学习(2)-Prompt优化思路|十个技巧高效优化Prompt|迭代法|Trick法|通用法|工具辅助