自学内容网 自学内容网

昇思MindSpore学习入门-轻量化数据处理

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

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

虽然构建数据管道可以批量处理输入数据,但是数据管道的API设计要求用户从构建输入源开始,逐步定义数据管道中的各个Transform,仅当在定义map的时候才会涉及与用户输入数据高度相关的Transform。

无疑,用户只想重点关注这些与其相关度最高的代码,但其他相关度较低的代码却在整个代码场景中为用户增加了不必要的负担。

因此,MindSpore提供了一种轻量化的数据处理执行方式,称为Eager模式。

在Eager模式下,执行Transforms不需要依赖构建数据管道map,而是以函数式调用的方式执行Transforms。因此代码编写会更为简洁且能立即执行得到运行结果,推荐在小型数据增强实验、模型推理等轻量化场景中使用。

MindSpore目前支持在Eager模式执行各种Transform,具体如下所示,更多数据变换接口参见API文档。

  • vision模块
    • 子模块transforms,基于OpenCV/Pillow实现的数据变换。
  • text模块
    • 子模块transforms,基于Jieba/ICU4C等库实现的数据变换。
  • transforms模块
    • 子模块transforms,基于C++/Python/NumPy实现的通用数据变换。

Eager模式

下面将简要介绍各Transforms模块的Eager模式使用方法。使用Eager模式,只需要将Transform本身当成可执行函数即可。

数据准备

以下示例代码将图片数据下载到指定位置。

vision

此示例将使用mindspore.dataset.vision模块中的Transform,对给定图像进行变换。

您仅需要关注使用何种数据变换,而不需要关注数据管道的任何代码。

Vision Transform的Eager模式支持numpy.array或PIL.Image类型的数据作为入参。

text

此示例将使用text模块中Transforms,对给定文本进行变换。

Text Transforms的Eager模式支持numpy.array类型数据的作为入参。

transforms

此示例将使用transforms模块中通用Transform,对给定数据进行变换。

通用Transform的Eager模式支持numpy.array类型的数据作为入参。


原文地址:https://blog.csdn.net/buw369521/article/details/140646609

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!