MindSpore深度学习高阶技术
上QQ阅读APP看书,第一时间看更新

1.1.3 使用示例

对于常用的数据集,如CIFAR-10、CIFAR-100、MNIST、ImageNet,以及常用的文件格式,如CSV、TFRecord,MindSpore提供了相应的Python接口,可以将它们一键转换为MindRecord数据格式,详情可参见MindSpore官网的API文档。下面主要介绍如何自定义转换CV(Computer Vision,计算机视觉)类和NLP(Natural Language Processing,自然语言处理)类的数据集。

1.转换CV类数据集

本示例主要介绍如何自定义转换CV类数据集为MindRecord。

首先导入代码所需的相关模块,如代码1.3所示。

代码1.3 导入相关模块

定义MindRecord文件名,清除工作路径中的重名文件,并创建文件写入句柄,如代码1.4所示,其中shard_num为MindRecord文件分片数量。

代码1.4 创建文件写入句柄

定义schema数据结构信息,包含file_name、label和data三个字段,数据类型分别为string、int32和bytes,定义索引字段为file_name和label,如代码1.5所示。

代码1.5 定义数据格式和索引

为了便于演示,此处使用Image.new方法生成100张图像并写入MindRecord文件,如代码1.6所示,实际使用中用户可自行替换为需要存储的数据。

代码1.6 定义数据列表并写入MindRecord文件

运行代码后,工作目录下将会生成test.mindrecord和test.mindrecord.db文件,其中存储了定义的CV数据信息。

2.转换NLP类数据集

本示例主要介绍如何自定义转换NLP类数据集为MindRecord。为了便于演示,此处略去了将文本转换为字典序的预处理过程。

同样需要导入代码所需的相关模块,如代码1.7所示。

代码1.7 导入相关模块

定义MindRecord文件名,清除工作路径中的重名文件,并创建文件写入句柄,如代码1.8所示,其中shard_num为MindRecord文件分片数量。

代码1.8 创建文件写入句柄

定义schema数据结构信息,包含source_sos_ids、source_sos_mask、source_eos_ids、source_eos_mask、target_sos_ids、target_sos_mask、target_eos_ids、target_eos_mask等字段,数据类型都为int64,数据维度为-1,表示变长向量,如代码1.9所示。

代码1.9 定义数据格式和索引

为了便于演示,此处使用NumPy根据索引生成数据并写入MindRecord文件,如代码1.10所示,实际使用中用户可自行替换为文本经预处理后得到的字典序数据。

代码1.10 定义数据列表并写入MindRecord文件

运行代码后,工作目录下将会生成test.mindrecord和test.mindrecord.db文件,其中存储了定义的NLP数据信息。