paddlepaddle学习笔记(二)———手写数字识别

1. 基于纵向+横向的基本框架

paddlepaddle学习笔记(二)———手写数字识别_第1张图片

 

 

 纵向为训练模型的一般步骤,横向为每一部分设计合适的方案,使得学习者更好的掌握深度学习的理论知识。

2. 模型实现

 读取数据:paddle.dataset.mnist.train()

 模型设计:模型的输入为784维(28*28)数据,输出为1维数据,如 下图 所示。

paddlepaddle学习笔记(二)———手写数字识别_第2张图片

  输入像素的位置排布信息对理解图像内容非常重要(如将原始尺寸为28*28图像的像素按照7*112的尺寸排布,那么其中的数字将不可识别),因此网络的输入设计为28*28的尺寸,而不是1*784,以便于模型能够正确处理像素之间的空间信息。

训练配置:训练配置需要先生成模型实例(设为“训练”状态),再设置优化算法和学习率(使用随机梯度下降SGD,学习率设置为0.001)

 

训练过程:训练过程采用二层循环嵌套方式,训练完成后需要保存模型参数,以便后续使用。

  • 内层循环:负责整个数据集的一次遍历,遍历数据集采用分批次(batch)方式。
  • 外层循环:定义遍历数据集的次数,本次训练中外层循环10次,通过参数EPOCH_NUM设置。

模型测试: 模型测试的主要目的是验证训练好的模型是否能正确识别出数字,包括如下四步:

  • 声明实例
  • 加载模型:加载训练过程中保存的模型参数。
  • 灌入数据:将测试样本传入模型,模型的状态设置为校验状态(eval),显式告诉框架我们接下来只会使用前向计算的流程,不会计算梯度和梯度反向传播。
  • 获取预测结果,取整后作为预测标签输出。

在模型测试之前,需要先从'./work/example_0.jpg'文件中读取样例图片,并进行归一化处理。

 

你可能感兴趣的:(paddlepaddle学习笔记(二)———手写数字识别)