这次的内容围绕数据集展开。可以用来参考的文档有:
https://www.mindspore.cn/docs/zh-CN/r2.3/design/data_engine.html
https://www.mindspore.cn/tutorials/zh-CN/r2.3/beginner/dataset.html
https://www.mindspore.cn/tutorials/zh-CN/r2.3/beginner/transforms.html
主要内容如下:
1. 概述
MindSpore提供基于Pipeline的数据引擎,通过Dataset和Transforms实现高效的数据预处理。Dataset是Pipeline的起始,用于加载原始数据。
2. 数据集加载
- 使用
MnistDataset
加载MNIST数据集 - 数据集加载接口仅支持解压后的数据文件
3. 数据集迭代
- 使用
create_tuple_iterator
或create_dict_iterator
创建数据迭代器 - 可设置
output_numpy=True
输出NumPy数组
4. 数据集常用操作
4.1 shuffle
- 消除数据排列造成的分布不均问题
- 可在加载时设置
shuffle=True
或使用dataset.shuffle()
4.2 map
- 针对指定列添加数据变换
- 例如:使用
vision.Rescale
对图像进行缩放
4.3 batch
- 将数据集打包为固定大小的batch
- 使用
dataset.batch(batch_size=32)
设置batch大小
5. 自定义数据集
使用GeneratorDataset
接口实现自定义数据集加载,支持三种方式:
5.1 可随机访问数据集
- 实现
__getitem__
和__len__
方法 - 可通过索引直接访问数据样本
5.2 可迭代数据集
- 实现
__iter__
和__next__
方法 - 适用于随机访问成本高的情况
5.3 生成器
- 直接使用Python的generator类型
- 需要用lambda包装以生成多个实例
通过这些方法,可以灵活地加载各种类型的自定义数据集。
教程来自:
https://gitee.com/mindspore/docs/blob/r2.3/tutorials/source_zh_cn/beginner/dataset.ipynb