数据集 Dataset学习
MindSpore提供基于Pipeline的数据引擎,通过数据集(Dataset)和数据变换(Transforms)实现高效的数据预处理。
1.数据集加载
mindspore.dataset
提供的接口仅支持解压后的数据文件,因此我们使用库下载数据集并解压。download
2.数据集迭代
数据集加载后,一般以迭代方式获取数据,然后送入神经网络中进行训练。我们可以用create_tuple_iterator或create_dict_iterator接口创建数据迭代器,迭代访问数据。
3.数据集常用操作
Pipeline的设计理念使得数据集的常用操作采用的异步执行方式,执行操作返回新的Dataset,此时不执行具体操作,而是在Pipeline中加入节点,最终进行迭代时,并行执行整个Pipeline。
4.自定义数据集
对于MindSpore暂不支持直接加载的数据集,可以构造自定义数据加载类或自定义数据集生成函数的方式来生成数据集,然后通过接口实现自定义方式的数据集加载。
(1)可随机访问数据集
可随机访问数据集是实现了和方法的数据集,表示可以通过索引/键直接访问对应位置的数据样本。
(2)可迭代数据集
可迭代的数据集是实现了`__iter__`和`__next__`方法的数据集,表示可以通过迭代的方式逐步获取数据样本。这种类型的数据集特别适用于随机访问成本太高或者不可行的情况。
(3)生成器
生成器也属于可迭代的数据集类型,其直接依赖Python的生成器类型`generator`返回数据,直至生成器抛出`StopIteration`异常。
打印结果以及学习id