[笔记]飞浆PaddlePaddle-百度架构师手把手带你零基础实践深度学习-21日学习打卡(Day 3)

[笔记]飞浆PaddlePaddle-百度架构师手把手带你零基础实践深度学习-21日学习打卡(Day 3)

logo

(Credit: https://gitee.com/paddlepaddle/Paddle/raw/develop/doc/imgs/logo.png)


MNIST数据集

MNIST数据集可以认为是学习机器学习的“hello world”。最早出现在1998年LeCun的论文1中,是NIST数据集的延伸,具体细节可以在LeCun的个人主页找到。

MNIST数据集是为了手写数字识别任务

  • 包含:60,000个训练样本,10,000个测试样本。
  • 每个样本是28*28像素的灰度图片
  • 每个样本对于0-9的数字标签

构建模型和完成训练的程序

  • 数据处理:读取数据 和 预处理操作
  • 模型设计:网络结构(假设)
  • 训练配置:优化器(寻解算法) 和 计算资源配置
  • 训练过程:循环调用训练过程,前向计算 + 损失函数(优化目标) + 后向传播
  • 保存模型:将训练好的模型保存

查阅API的方法

  1. API文档地址 (Version 1.8)
  2. 查阅文档的两种方法:搜索和分类浏览
  3. API说明结构:函数形式,功能说明,计算公式,参数和返回值,代码示例

处理数据

  • 训练样本集乱序
    • 建立ID集 index_list
    • 乱序index_list
    • 以新顺序读取数据
  • 生成批次数据
    • 设置batchsize
    • 数据转变成符合要求的np.array要求
    • Python生成器:yield,减少内存占用
  • 校验数据的有效性
    • 校验并刨除不合预期的数据

异步读取数据

  • 同步读取 vs 异步读取
    • 同步读取:IO和网络计算串行,速度慢
    • 异步读取:IO和计算通过一个“异步队列”交互,IO把数据不停放入队列,网络计算不同从队列取数据,二者同时进行
  • PyReader
    • 飞桨提供的异步数据读取器,只需要修改两行代码
    • 创建一个DataLoader对象用于加载Python生成器产生的数据,数据会由Python线程预先读取,并异步送入设定了容量上限的队列中
# 定义DataLoader对象用于加载Python生成器产生的数据
data_loader = fluid.io.DataLoader.from_generator(capacity=5, return_list=True)
# 设置数据生成器
data_loader.set_batch_generator(train_loader, places=place)

说明

  • capacity (int) - DataLoader对象内部维护队列的容量大小。单位是batch数量。若reader读取速度较快,建议设置较大的capacity值。
  • return_list (bool) - 每个设备上的数据是否以list形式返回。动态图模式下使用return_list = True。
  • 详见官方文档

Reference


  1. LeCun, Y., Bottou, L., Bengio, Y. and Haffner, P., 1998. Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11), pp.2278-2324. ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值