paddle实现手写数字识别(1)

Paddle深度学习:毕然老师的MNIST手写数字识别教程

学习思路

内容来源于百度毕然老师学习课程教案。图1是毕然老师总结的“纵横学习方法”。
在这里插入图片描述首先基于百度的paddle来建模解决一个问题的思路,纵向上分为六个步骤,横向上对每一个步骤进行细分学习。

数据处理

# 设置数据读取器,API自动读取MNIST数据训练集
train_dataset = paddle.vision.datasets.MNIST(mode='train')

读取minst的train训练集数据,paddle内置了常规用于测试开发的数据集。

mnist
cifar
Conll05
imdb
imikolov
movielens
sentiment
uci_housing
wmt14
wmt16

可视化第一张图片数据

train_data_0 = np.array(train_dataset[0][0])
train_label_0 = np.array(train_dataset[0][1])

# 显示第一batch的第一个图像
import matplotlib.pyplot as plt
plt.figure("Image") # 图像窗口名称
plt.figure(figsize=(2,2))
plt.imshow(train_data_0, cmap=plt.cm.binary)
plt.axis('on') # 关掉坐标轴为 off
plt.title('image') # 图像题目
plt.show()

print("图像数据形状和对应数据为:", train_data_0.shape)
print("图像标签形状和对应数据为:", train_label_0.shape, train_label_0)
print("\n打印第一个batch的第一个图像,对应标签数字为{}".format(train_label_0))

在这里插入图片描述飞将api介绍
在这里插入图片描述

模型设计

在房价预测深度学习任务中,我们使用了单层且没有非线性变换的模型,取得了理想的预测效果。在手写数字识别中,我们依然使用这个模型预测输入的图形数字值。其中,模型的输入为784维(28×28)数据,输出为1维数据,如 图4 所示。
在这里插入图片描述
输入像素的位置排布信息对理解图像内容非常重要(如将原始尺寸为28×2828×2828×28图像的像素按照7×1127×1127×112的尺寸排布,那么其中的数字将不可识别),因此网络的输入设计为28×2828×2828×28

基于PaddlePaddle手写数字识别系统开发与实现有多种方式,以下是不同实现方案的介绍: ### 飞桨高层API实现 在使用飞桨高层API实现手写数字识别任务时,准备阶段需要导入相关的包,代码如下: ```python import paddle import numpy as np import matplotlib.pyplot as plt import paddle.vision.transforms as T ``` 此部分代码导入了PaddlePaddle、NumPy、Matplotlib以及Paddle的视觉变换模块,为后续的开发做准备 [^2]。 ### 单隐层全连接网络模型构建 设计神经网络时可采用单隐层全连接网络。输入层神经元为784(对应28像素 * 28像素的图像),隐层512个神经元(可根据需求定制),输出层10个神经元(因为是对0 - 9的数字进行多分类任务)。模型构建代码如下: ```python # 模型网络结构搭建 network = paddle.nn.Sequential( paddle.nn.Flatten(), # 拉平,将 (28, 28) => (784) paddle.nn.Linear(784, 512), # 隐层:线性变换层 paddle.nn.ReLU(), # 激活函数 paddle.nn.Linear(512, 10) # 输出层 ) # 模型封装 model = paddle.Model(network) # 模型可视化 model.summary((1, 28, 28)) ``` 该代码先搭建了单隐层全连接网络的结构,将输入图像拉平,经过线性变换和激活函数处理,最后输出分类结果。接着对模型进行封装并可视化展示 [^4]。 ### 基于PaddleOCR的实现 使用Python基于paddleocr2.7.0进行Mnist手写数字识别,开发步骤如下: 1. **安装PaddleOCR**:完成PaddleOCR的安装工作。 2. **配置环境**:确保开发环境满足要求。 3. **创建手写数字数据集** - 拼接数据集:拼接0 - 99的数据集。 - 数据展示:对数据集进行展示查看。 4. **训练模型** - 下载预训练模型:获取用于训练的预训练模型。 - 修改参数:根据需求对模型训练的参数进行调整。 - 模型训练:使用数据集对模型进行训练。 - 模型导出:将训练好的模型进行导出保存。 5. **模型测试** - 采样测试图片:选取测试图片。 - 模型测试:使用测试图片对模型进行测试。 6. **系统测试(检测 + 识别)** - 下载检测和方向模型:获取相关的检测和方向模型。 - 系统检测:对系统进行整体的检测和识别测试 [^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值