274 lines
12 KiB
ReStructuredText
274 lines
12 KiB
ReStructuredText
mindspore.dataset
|
||
==================
|
||
|
||
MindSpore的核心数据加载模块是Dataset,是一种基于Pipeline设计的 `数据引擎 <https://www.mindspore.cn/docs/zh-CN/master/features/data_engine.html>`_ 。
|
||
|
||
该模块提供了以下几种数据加载方式,帮助用户加载数据集到MindSpore中。
|
||
|
||
- 自定义数据集加载:允许用户通过Python定义 `可随机访问(Map-style)数据集 <https://www.mindspore.cn/tutorials/zh-CN/master/beginner/dataset.html#可随机访问数据集>`_
|
||
和 `可迭代(Iterable-style)数据集 <https://www.mindspore.cn/tutorials/zh-CN/master/beginner/dataset.html#可迭代数据集>`_ 自定义数据读取、处理逻辑。
|
||
- 标准格式数据集加载:支持加载业界标准数据格式的数据集文件,包括 `MindRecord <https://www.mindspore.cn/tutorials/zh-CN/master/dataset/record.html>`_ 、`TFRecord <https://tensorflow.google.cn/tutorials/load_data/tfrecord.md?hl=zh-cn>`_ 等。
|
||
- 开源数据集加载:支持部分 `开源数据集 <#开源数据集加载>`_ 的解析读取,如MNIST、CIFAR-10、CLUE、LJSpeech等。
|
||
|
||
此外,该模块也提供了对数据进行采样、增强变换、批处理等功能,以及随机种子、并行数等基础配置,与数据集加载API配合使用。
|
||
|
||
- 数据采样器:提供了多种常见 `采样器 <#采样器-1>`_ ,如RandomSampler、DistributedSampler等。
|
||
- 数据增强变换:提供了多种 `数据集操作 <https://www.mindspore.cn/docs/zh-CN/master/api_python/dataset/mindspore.dataset.GeneratorDataset.html#预处理操作>`_ ,以此对数据进行增强,批处理等。
|
||
- 基础配置:提供了 `Pipeline配置 <#配置>`_ 用于随机种子设置、并行数设置、数据恢复模式等功能。
|
||
|
||
常用数据集术语说明如下:
|
||
|
||
- Dataset,所有数据集的基类,提供了数据处理方法来帮助预处理数据。
|
||
- SourceDataset,一个抽象类,表示数据集管道的来源,从文件和数据库等数据源生成数据。
|
||
- MappableDataset,一个抽象类,表示支持随机访问的源数据集。
|
||
- Iterator,用于枚举元素的数据集迭代器的基类。
|
||
|
||
数据处理Pipeline介绍
|
||
--------------------
|
||
|
||
.. image:: dataset_pipeline.png
|
||
|
||
如上图所示,MindSpore Dataset模块使得用户很简便地定义数据预处理Pipeline,并以最高效(多进程/多线程)的方式处理
|
||
数据集中样本,具体的步骤参考如下:
|
||
|
||
- 加载数据集(Dataset):用户可以方便地使用 Dataset类 ( `标准格式数据集 <https://www.mindspore.cn/docs/zh-CN/master/api_python/mindspore.dataset.loading.html#标准格式数据集加载>`_ 、
|
||
`vision数据集 <https://www.mindspore.cn/docs/zh-CN/master/api_python/mindspore.dataset.loading.html#视觉数据集>`_ 、
|
||
`nlp数据集 <https://www.mindspore.cn/docs/zh-CN/master/api_python/mindspore.dataset.loading.html#文本数据集>`_ 、
|
||
`audio数据集 <https://www.mindspore.cn/docs/zh-CN/master/api_python/mindspore.dataset.loading.html#音频数据集>`_ ) 来加载已支持的数据集,
|
||
或者使用 `自定义数据集加载 <https://www.mindspore.cn/docs/zh-CN/master/api_python/mindspore.dataset.loading.html#自定义数据集加载-1>`_ ,通过Python逻辑自定义数据集行为;
|
||
|
||
- 数据集操作(filter/ skip):用户通过数据集对象方法 `.shuffle <https://www.mindspore.cn/docs/zh-CN/master/api_python/dataset/dataset_method/operation/mindspore.dataset.Dataset.shuffle.html#mindspore.dataset.Dataset.shuffle>`_ /
|
||
`.filter <https://www.mindspore.cn/docs/zh-CN/master/api_python/dataset/dataset_method/operation/mindspore.dataset.Dataset.filter.html#mindspore.dataset.Dataset.filter>`_ /
|
||
`.skip <https://www.mindspore.cn/docs/zh-CN/master/api_python/dataset/dataset_method/operation/mindspore.dataset.Dataset.skip.html#mindspore.dataset.Dataset.skip>`_ /
|
||
`.split <https://www.mindspore.cn/docs/zh-CN/master/api_python/dataset/dataset_method/operation/mindspore.dataset.Dataset.split.html#mindspore.dataset.Dataset.split>`_ /
|
||
`.take <https://www.mindspore.cn/docs/zh-CN/master/api_python/dataset/dataset_method/operation/mindspore.dataset.Dataset.take.html#mindspore.dataset.Dataset.take>`_ / … 来实现数据集的进一步混洗、过滤、跳过、最多获取条数等操作;
|
||
|
||
- 数据集样本变换操作(map):用户可以将数据变换操作 (`vision数据变换 <https://www.mindspore.cn/docs/zh-CN/master/api_python/mindspore.dataset.transforms.html#视觉>`_ ,
|
||
`nlp数据变换 <https://www.mindspore.cn/docs/zh-CN/master/api_python/mindspore.dataset.transforms.html#文本>`_ ,
|
||
`audio数据变换 <https://www.mindspore.cn/docs/zh-CN/master/api_python/mindspore.dataset.transforms.html#音频>`_ )
|
||
添加到 `.map <https://www.mindspore.cn/docs/zh-CN/master/api_python/dataset/dataset_method/operation/mindspore.dataset.Dataset.map.html>`_ 操作中执行,
|
||
数据预处理过程中可以定义多个map操作,用于执行不同变换操作,数据变换操作也可以支持传入用户自定义Python函数 ;
|
||
|
||
- 批(batch):用户在样本完成变换后,使用 `.batch <https://www.mindspore.cn/docs/zh-CN/master/api_python/dataset/dataset_method/batch/mindspore.dataset.Dataset.batch.html#mindspore.dataset.Dataset.batch>`_
|
||
操作将多个样本组织成batch,也可以通过batch的参数 `per_batch_map` 来自定义batch逻辑;
|
||
|
||
- 迭代器(iterator):最后用户通过数据集对象方法 `.create_dict_iterator <https://www.mindspore.cn/docs/zh-CN/master/api_python/dataset/dataset_method/iterator/mindspore.dataset.Dataset.create_dict_iterator.html>`_ /
|
||
`.create_tuple_iterator <https://www.mindspore.cn/docs/zh-CN/master/api_python/dataset/dataset_method/iterator/mindspore.dataset.Dataset.create_tuple_iterator.html>`_ 来创建迭代器将预处理完成的数据循环输出。
|
||
|
||
数据处理Pipeline快速上手
|
||
-------------------------
|
||
|
||
如何快速使用Dataset Pipeline,可以将 `使用数据Pipeline加载 & 处理数据集 <https://www.mindspore.cn/docs/zh-CN/master/api_python/samples/dataset/dataset_gallery.html>`_ 下载到本地,按照顺序执行并观察输出结果。
|
||
|
||
自定义数据集加载
|
||
-----------------
|
||
|
||
.. mscnautosummary::
|
||
:toctree: dataset
|
||
:nosignatures:
|
||
:template: classtemplate_inherited.rst
|
||
|
||
mindspore.dataset.GeneratorDataset
|
||
|
||
标准格式数据集加载
|
||
-------------------
|
||
|
||
.. mscnautosummary::
|
||
:toctree: dataset
|
||
:nosignatures:
|
||
:template: classtemplate_inherited.rst
|
||
|
||
mindspore.dataset.MindDataset
|
||
mindspore.dataset.OBSMindDataset
|
||
mindspore.dataset.TFRecordDataset
|
||
|
||
|
||
开源数据集加载
|
||
---------------
|
||
|
||
视觉数据集
|
||
^^^^^^^^^^^
|
||
|
||
.. mscnautosummary::
|
||
:toctree: dataset
|
||
:nosignatures:
|
||
:template: classtemplate_inherited.rst
|
||
|
||
mindspore.dataset.Caltech101Dataset
|
||
mindspore.dataset.Caltech256Dataset
|
||
mindspore.dataset.CelebADataset
|
||
mindspore.dataset.Cifar10Dataset
|
||
mindspore.dataset.Cifar100Dataset
|
||
mindspore.dataset.CityscapesDataset
|
||
mindspore.dataset.CocoDataset
|
||
mindspore.dataset.DIV2KDataset
|
||
mindspore.dataset.EMnistDataset
|
||
mindspore.dataset.FakeImageDataset
|
||
mindspore.dataset.FashionMnistDataset
|
||
mindspore.dataset.FlickrDataset
|
||
mindspore.dataset.Flowers102Dataset
|
||
mindspore.dataset.Food101Dataset
|
||
mindspore.dataset.ImageFolderDataset
|
||
mindspore.dataset.KITTIDataset
|
||
mindspore.dataset.KMnistDataset
|
||
mindspore.dataset.LFWDataset
|
||
mindspore.dataset.LSUNDataset
|
||
mindspore.dataset.ManifestDataset
|
||
mindspore.dataset.MnistDataset
|
||
mindspore.dataset.OmniglotDataset
|
||
mindspore.dataset.PhotoTourDataset
|
||
mindspore.dataset.Places365Dataset
|
||
mindspore.dataset.QMnistDataset
|
||
mindspore.dataset.RenderedSST2Dataset
|
||
mindspore.dataset.SBDataset
|
||
mindspore.dataset.SBUDataset
|
||
mindspore.dataset.SemeionDataset
|
||
mindspore.dataset.STL10Dataset
|
||
mindspore.dataset.SUN397Dataset
|
||
mindspore.dataset.SVHNDataset
|
||
mindspore.dataset.USPSDataset
|
||
mindspore.dataset.VOCDataset
|
||
mindspore.dataset.WIDERFaceDataset
|
||
|
||
文本数据集
|
||
^^^^^^^^^^^
|
||
|
||
.. mscnautosummary::
|
||
:toctree: dataset
|
||
:nosignatures:
|
||
:template: classtemplate_inherited.rst
|
||
|
||
mindspore.dataset.AGNewsDataset
|
||
mindspore.dataset.AmazonReviewDataset
|
||
mindspore.dataset.CLUEDataset
|
||
mindspore.dataset.CSVDataset
|
||
mindspore.dataset.CoNLL2000Dataset
|
||
mindspore.dataset.DBpediaDataset
|
||
mindspore.dataset.EnWik9Dataset
|
||
mindspore.dataset.IMDBDataset
|
||
mindspore.dataset.IWSLT2016Dataset
|
||
mindspore.dataset.IWSLT2017Dataset
|
||
mindspore.dataset.Multi30kDataset
|
||
mindspore.dataset.PennTreebankDataset
|
||
mindspore.dataset.SogouNewsDataset
|
||
mindspore.dataset.SQuADDataset
|
||
mindspore.dataset.SST2Dataset
|
||
mindspore.dataset.TextFileDataset
|
||
mindspore.dataset.UDPOSDataset
|
||
mindspore.dataset.WikiTextDataset
|
||
mindspore.dataset.YahooAnswersDataset
|
||
mindspore.dataset.YelpReviewDataset
|
||
|
||
音频数据集
|
||
^^^^^^^^^^^
|
||
|
||
.. mscnautosummary::
|
||
:toctree: dataset
|
||
:nosignatures:
|
||
:template: classtemplate_inherited.rst
|
||
|
||
mindspore.dataset.CMUArcticDataset
|
||
mindspore.dataset.GTZANDataset
|
||
mindspore.dataset.LibriTTSDataset
|
||
mindspore.dataset.LJSpeechDataset
|
||
mindspore.dataset.SpeechCommandsDataset
|
||
mindspore.dataset.TedliumDataset
|
||
mindspore.dataset.YesNoDataset
|
||
|
||
其他数据集
|
||
----------
|
||
|
||
.. mscnautosummary::
|
||
:toctree: dataset
|
||
:nosignatures:
|
||
:template: classtemplate_inherited.rst
|
||
|
||
mindspore.dataset.NumpySlicesDataset
|
||
mindspore.dataset.PaddedDataset
|
||
mindspore.dataset.RandomDataset
|
||
|
||
采样器
|
||
-------
|
||
|
||
.. mscnautosummary::
|
||
:toctree: dataset
|
||
|
||
mindspore.dataset.DistributedSampler
|
||
mindspore.dataset.PKSampler
|
||
mindspore.dataset.RandomSampler
|
||
mindspore.dataset.SequentialSampler
|
||
mindspore.dataset.SubsetRandomSampler
|
||
mindspore.dataset.SubsetSampler
|
||
mindspore.dataset.WeightedRandomSampler
|
||
|
||
配置
|
||
-------
|
||
|
||
config模块能够设置或获取数据处理管道的全局配置参数。
|
||
|
||
.. mscnautosummary::
|
||
:toctree: dataset
|
||
|
||
mindspore.dataset.config.set_sending_batches
|
||
mindspore.dataset.config.load
|
||
mindspore.dataset.config.set_seed
|
||
mindspore.dataset.config.get_seed
|
||
mindspore.dataset.config.set_prefetch_size
|
||
mindspore.dataset.config.get_prefetch_size
|
||
mindspore.dataset.config.set_num_parallel_workers
|
||
mindspore.dataset.config.get_num_parallel_workers
|
||
mindspore.dataset.config.set_numa_enable
|
||
mindspore.dataset.config.get_numa_enable
|
||
mindspore.dataset.config.set_monitor_sampling_interval
|
||
mindspore.dataset.config.get_monitor_sampling_interval
|
||
mindspore.dataset.config.set_callback_timeout
|
||
mindspore.dataset.config.get_callback_timeout
|
||
mindspore.dataset.config.set_auto_num_workers
|
||
mindspore.dataset.config.get_auto_num_workers
|
||
mindspore.dataset.config.set_enable_shared_mem
|
||
mindspore.dataset.config.get_enable_shared_mem
|
||
mindspore.dataset.config.set_enable_autotune
|
||
mindspore.dataset.config.get_enable_autotune
|
||
mindspore.dataset.config.set_autotune_interval
|
||
mindspore.dataset.config.get_autotune_interval
|
||
mindspore.dataset.config.set_auto_offload
|
||
mindspore.dataset.config.get_auto_offload
|
||
mindspore.dataset.config.set_enable_watchdog
|
||
mindspore.dataset.config.get_enable_watchdog
|
||
mindspore.dataset.config.set_fast_recovery
|
||
mindspore.dataset.config.get_fast_recovery
|
||
mindspore.dataset.config.set_multiprocessing_timeout_interval
|
||
mindspore.dataset.config.get_multiprocessing_timeout_interval
|
||
mindspore.dataset.config.set_error_samples_mode
|
||
mindspore.dataset.config.get_error_samples_mode
|
||
mindspore.dataset.config.ErrorSamplesMode
|
||
mindspore.dataset.config.set_debug_mode
|
||
mindspore.dataset.config.get_debug_mode
|
||
mindspore.dataset.config.set_multiprocessing_start_method
|
||
mindspore.dataset.config.get_multiprocessing_start_method
|
||
mindspore.dataset.config.set_video_backend
|
||
mindspore.dataset.config.get_video_backend
|
||
|
||
工具
|
||
-----
|
||
|
||
.. mscnautosummary::
|
||
:toctree: dataset
|
||
:nosignatures:
|
||
:template: classtemplate_inherited.rst
|
||
|
||
mindspore.dataset.BatchInfo
|
||
mindspore.dataset.DatasetCache
|
||
mindspore.dataset.DSCallback
|
||
mindspore.dataset.Schema
|
||
mindspore.dataset.Shuffle
|
||
mindspore.dataset.WaitedDSCallback
|
||
mindspore.dataset.compare
|
||
mindspore.dataset.debug.DebugHook
|
||
mindspore.dataset.deserialize
|
||
mindspore.dataset.serialize
|
||
mindspore.dataset.show
|
||
mindspore.dataset.sync_wait_for_dataset
|
||
mindspore.dataset.utils.imshow_det_bbox
|
||
mindspore.dataset.utils.LineReader
|