数据集(Dataset)定义
数据集是深度神经网络的输入数据。MindSpore 有自己的数据集格式(MindRecord),支持在 python 中用 mindspore.dataset.MnistDataset 加载。
数据集一般是按列组织的,每一列具有相同的行数。不同格式的数据庥,对其各列及元素的组织有不同。
迭代(遍历)Dataset
MindSpore 的数据集都继承自 mindspore.dataset.Dataset
接口。这个接口封装了 create_tuple_iterator
和 create_dict_iterator
函数。两个函数分别用来创建列表迭代器、字典迭代器。
Dataset 操作
对 Dataset 的操作,并不是在方法调用的时候执行,而是延迟到迭代时。调用方法,其实是编排迭代的 pipeline,真正迭代数据集时才执行 pipeline。这样可以根据需要,定制迭代的方式,控制操作的数据范围。最常见的 Dataset 操作方法有 shuffle、map、batch 等。
- shuffle( buffer_size )
乱序 - map( transform, column_names )
对指定列,添加数据变换(Transforms) - batch( batch_size )
打包,增加数据维度,每一维包含 batch_size 行数据。
自定义格式 Dataset 的加载
对于 MindSpore 支持的 Dataset 格式,会封装相应 Dataset 类型,把数据路径传给构造函数参数,即可完成数据加载。
对于 MindSpore 未支持的 Dataset 格式,需根据数据集的特性,自己定义 Dataset 的 loader 类,然后把 loader 类传递给 GeneratorDataset
接口的 source 参数,实现自定义格式数据集的加载 。
mindspore.dataset.GeneratorDataset( source=loader, coloumn_names=[] )