MindSpore是一个提供高性能数据处理引擎的深度学习框架。在MindSpore中,数据集(Dataset)和数据变换(Transforms)模块用于高效的数据预处理。数据集是Pipeline的起始,用于加载原始数据。MindSpore提供了内置的文本、图像、音频等数据集加载接口,并支持自定义数据集加载接口。此外,MindSpore还提供了大量的预加载数据集,可以使用API一键下载和使用。
数据集加载后,通常以迭代方式获取数据并送入神经网络进行训练。MindSpore提供了create_tuple_iterator
和create_dict_iterator
接口用于创建数据迭代器,通过迭代访问数据。数据的访问类型默认为Tensor
,可以设置output_numpy=True
以访问Numpy
类型的数据。
数据预处理中的关键操作是map
操作,它可以针对数据集的特定列(column)添加数据变换(Transforms),对每个元素应用变换,并返回包含变换后元素的新数据集。MindSpore的mindspore.dataset
模块提供了常用的公开数据集加载API和标准格式数据集加载API。
对于MindSpore暂不支持直接加载的数据集,可以通过构造自定义数据加载类或自定义数据集生成函数来生成数据集,然后使用GeneratorDataset
接口加载自定义方式的数据集GeneratorDataset
支持可随机访问数据集对象、可迭代数据集对象和生成器构造的自定义数据集。可随机访问数据集是实现了__getitem__
和__len__
方法的数据集,可以通过索引/键直接访问对应位置的数据样本。可迭代数据集是实现了__iter__
和__next__
方法的数据集,可以通过迭代的方式逐步获取数据样本。生成器是一种基于Python生成器类型的数据集,通过生成器返回数据,直到生成器抛出StopIteration
异常。