昇思25天学习打卡营第14天|高级数据处理

(注意:本次练习如果直接复制教程的代码会有一些字符缺失,print 只复制了 t,需要将print补全才能正确运行 )

高级数据处理包括以下几个部分:

为满足训练需求,解决诸如数据集过大或样本类别分布不均等问题,MindSpore提供了多种不同用途的采样器(Sampler),帮助用户对数据集进行不同形式的采样。用户只需在加载数据集时传入采样器对象,即可实现数据的采样。

MindSpore目前提供了如RandomSamplerWeightedRandomSamplerSubsetRandomSampler等多种采样器。此外,用户也可以根据需要实现自定义的采样器类。

MindSpore中可以把用于训练网络模型的数据集,转换为MindSpore特定的格式数据(MindSpore Record格式),从而更加方便地保存和加载数据。其目标是归一化用户的数据集,并进一步通过MindDataset接口实现数据的读取,并用于训练过程。

在资源条件允许的情况下,为了追求更高的性能,一般使用Pipeline模式执行数据变换Transforms。

基于Pipeline模式执行的最大特点是需要使用map方法,如下图中将ResizeCropHWC2CHW交由map调度,由其负责启动和执行给定的Transform,对Pipeline的数据进行映射变换。

数据处理管道中的特定操作(如自定义数据集GeneratorDataset、自定义map增强操作、自定义batch(per_batch_map=...))支持任意Python类型对象作为输入。为了支持此特性,数据管道使用了Python(dict)字典去管理不同类型的对象。与其他类型相比,Python字典类型在数据管道中不会被转换成C++中的类型,而是以引用的形式保留在数据管道中。

注意,虽然目前数据管道只新增了识别字典类型的对象,但并不限制字典中的对象内容,因此也可以将其他Python类型封装进字典中并传入到数据处理管道中,以达到支持任意Python对象的目的。因此此教程主要介绍如何构造字典类型的数据输入到数据管道,并在迭代器中取得数据。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值