昇思MindSpore学习入门-格式转换

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

此外,MindSpore还针对部分数据场景进行了性能优化,使用MindSpore Record数据格式可以减少磁盘IO、网络IO开销,从而获得更好的使用体验。

MindSpore Record数据格式具备的特征如下:

  1. 实现数据统一存储、访问,使得训练时数据读取更加简便。
  2. 数据聚合存储、高效读取,使得训练时数据方便管理和移动。
  3. 高效的数据编解码操作,使得用户可以对数据操作无感知。
  4. 可以灵活控制数据切分的分区大小,实现分布式数据处理。

Record文件结构

如下图所示,MindSpore Record文件由数据文件和索引文件组成。

其中数据文件包含文件头、标量数据页、块数据页,用于存储用户归一化后的训练数据,且单个MindSpore Record文件建议小于20G,用户可将大数据集进行分片存储为多个MindSpore Record文件。

而索引文件则包含基于标量数据(如图像Label、图像文件名等)生成的索引信息,用于方便地检索、统计数据集信息。

数据文件中的文件头、标量数据页、块数据页的具体用途如下所示:

  • 文件头:是MindSpore Record文件的元信息,主要用来存储文件头大小、标量数据页大小、块数据页大小、Schema信息、索引字段、统计信息、文件分区信息、标量数据与块数据对应关系等。
  • 标量数据页:主要用来存储整型、字符串、浮点型数据,如图像的Label、图像的文件名、图像的长宽等信息,即适合用标量来存储的信息会保存在这里。
  • 块数据页:主要用来存储二进制串、NumPy数组等数据,如二进制图像文件本身、文本转换成的字典等。

转换成Record格式

下面主要介绍如何将CV类数据和NLP类数据转换为MindSpore Record文件格式,并通过MindDataset接口,实现MindSpore Record文件的读取。

转换CV类数据集

本示例主要以包含100条记录的CV数据集并将其转换为MindSpore Record格式为例子,介绍如何将CV类数据集转换成MindSpore Record文件格式,并使用MindDataset接口读取。

首先,需要创建100张图片的数据集并对齐进行保存,其样本包含file_name(字符串)、label(整型)、 data(二进制)三个字段,然后使用MindDataset接口读取该MindSpore Record文件。

  1. 生成100张图像,并转换成MindSpore Record文件格式。

  1. 通过MindDataset接口读取MindSpore Record文件格式。

转换NLP类数据集

本示例首先创建一个包含100条记录的MindSpore Record文件格式,其样本包含八个字段,均为整型数组,然后使用MindDataset接口读取该MindSpore Record文件。

  1. 生成100条文本数据,并转换成MindSpore Record文件格式。

  1. 通过MindDataset接口读取MindSpore Record格式文件。

Dataset转存MindRecord

MindSpore提供转换常用数据集的工具类,能够将常用的数据集转换为MindSpore Record文件格式。

转存CIFAR-10数据集

用户可以通过Dataset.save类,将CIFAR-10原始数据转换为MindSpore Record,并使用MindDataset接口读取。

  1. 下载CIFAR-10数据集,并使用Cifar10Dataset加载。

  1. 调用Dataset.save接口,将CIFAR-10数据集转存为MindSpore Record文件格式。
  2. 通过MindDataset接口读取MindSpore Record文件格式。

相关推荐

  1. MindSpore 应用学习-ResNet50迁移学习-CSDN

    2024-07-23 10:16:05       22 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-23 10:16:05       106 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-23 10:16:05       116 阅读
  3. 在Django里面运行非项目文件

    2024-07-23 10:16:05       95 阅读
  4. Python语言-面向对象

    2024-07-23 10:16:05       103 阅读

热门阅读

  1. JVM类加载机制详解

    2024-07-23 10:16:05       43 阅读
  2. Python:字典(Dictionary)基础应用

    2024-07-23 10:16:05       31 阅读
  3. 数据结构C++——矩阵【详】

    2024-07-23 10:16:05       33 阅读
  4. 问百度文心一言 下三角矩阵

    2024-07-23 10:16:05       31 阅读
  5. cookie和session的区别

    2024-07-23 10:16:05       30 阅读
  6. 图像预处理(基础功能)

    2024-07-23 10:16:05       32 阅读
  7. 014集——RSA非对称加密——vba源代码

    2024-07-23 10:16:05       32 阅读
  8. 如何面对压力和动力

    2024-07-23 10:16:05       36 阅读
  9. iphone11 如何打开开发者模式?

    2024-07-23 10:16:05       31 阅读
  10. centos7 yum更换国内源【超简洁步骤】

    2024-07-23 10:16:05       27 阅读