mindspore.mindrecord
MindRecord是MindSpore开发的一种高效数据格式,此模块提供了一些方法帮助用户将不同数据集转换为MindRecord格式, 也提供了一些操作MindRecord数据文件的方法如读取、写入、检索等。 用户可以使用FileWriter API生成MindRecord格式数据集,并使用MindDataset API加载MindRecord格式数据集。
用户还可以通过相应的子模块将其他格式数据集转换为MindRecord格式数据集。
用户也可以配置加密、解密和完整性校验,保证MindRecord格式数据集的安全。
- class mindspore.mindrecord.FileWriter(file_name, shard_num=1, overwrite=False)[源代码]
- 将用户自定义的数据转为MindRecord格式数据集的类。 - 说明 - 生成MindRecord文件后,如果修改文件名,可能会导致读取文件失败。 - 参数:
- file_name (str) - 转换生成的MindRecord文件路径。 
- shard_num (int,可选) - 生成MindRecord的文件个数。取值范围为[1, 1000]。默认值: - 1。
- overwrite (bool,可选) - 当指定目录存在同名文件时是否覆盖写。默认值: - False。
 
- 异常:
- ParamValueError - file_name 或 shard_num 无效。 
 
 - 样例: - >>> from mindspore.mindrecord import FileWriter >>> >>> writer = FileWriter(file_name="test.mindrecord", shard_num=1, overwrite=True) >>> schema_json = {"file_name": {"type": "string"}, "label": {"type": "int32"}, "data": {"type": "bytes"}} >>> writer.add_schema(schema_json, "test_schema") >>> indexes = ["file_name", "label"] >>> writer.add_index(indexes) >>> for i in range(10): ... data = [{"file_name": str(i) + ".jpg", "label": i, ... "data": b"\x10c\xb3w\xa8\xee$o&<q\x8c\x8e(\xa2\x90\x90\x96\xbc\xb1\x1e\xd4QER\x13?\xff"}] ... writer.write_raw_data(data) >>> writer.commit() - add_index(index_fields)[源代码]
- 指定schema中的字段作为索引来加速MindRecord文件的读取。schema可以通过 add_schema 来添加。 - 说明 - 索引字段应为Primitive类型,例如 int 、float 、str 。 
- 如果不调用该函数,则默认将schema中所有的Primitive类型的字段设置为索引。 请参考 - mindspore.mindrecord.FileWriter类的样例代码。
 - 参数:
- index_fields (list[str]) - schema中的字段。 
 
- 异常:
- ParamTypeError - 索引字段无效。 
- MRMDefineIndexError - 索引字段不是Primitive类型。 
- MRMAddIndexError - 无法添加索引字段。 
- MRMGetMetaError - 未设置schema或无法获取schema。 
 
 
 - add_schema(content, desc=None)[源代码]
- 增加描述用户自定义数据的schema。 - 说明 - 请参考 - mindspore.mindrecord.FileWriter类的样例代码。- MindRecord支持的数据类型 - 数据类型 - 数据维度 - 说明 - int32 - / - 整数 - int64 - / - 整数 - float32 - / - 浮点数 - float64 - / - 浮点数 - string - / - 字符串 - bytes - / - 二进制 - int32 - [-1] / [-1, 32, 32] / [3, 224, 224] - numpy.ndarray类型 - int64 - [-1] / [-1, 32, 32] / [3, 224, 224] - numpy.ndarray类型 - float32 - [-1] / [-1, 32, 32] / [3, 224, 224] - numpy.ndarray类型 - float64 - [-1] / [-1, 32, 32] / [3, 224, 224] - numpy.ndarray类型 - 参数:
- content (dict) - schema内容的字典。 
- desc (str,可选) - schema的描述。默认值: - None。
 
- 异常:
- MRMInvalidSchemaError - schema无效。 
- MRMBuildSchemaError - 构建schema失败。 
- MRMAddSchemaError - 添加schema失败。 
 
 - 样例: - >>> # Examples of available schemas >>> schema1 = {"file_name": {"type": "string"}, "label": {"type": "int32"}, "data": {"type": "bytes"}} >>> schema2 = {"input_ids": {"type": "int32", "shape": [-1]}, ... "input_masks": {"type": "int32", "shape": [-1]}} 
 - commit()[源代码]
- 将内存中的数据同步到磁盘,并生成相应的数据库文件。 - 说明 - 请参考 - mindspore.mindrecord.FileWriter类的样例代码。- 异常:
- MRMOpenError - 打开MindRecord文件失败。 
- MRMSetHeaderError - 设置MindRecord文件的header失败。 
- MRMIndexGeneratorError - 创建索引Generator失败。 
- MRMGenerateIndexError - 写入数据库失败。 
- MRMCommitError - 数据同步到磁盘失败。 
- RuntimeError - 并行写失败。 
 
 
 - classmethod open_for_append(file_name)[源代码]
- 打开MindRecord文件,准备追加数据。 - 参数:
- file_name (str) - MindRecord格式的数据集文件的路径。 
 
- 返回:
- FileWriter,MindRecord文件的写对象。 
- 异常:
- ParamValueError - file_name 无效。 
- FileNameError - MindRecord文件路径中包含无效字符。 
- MRMOpenError - 打开MindRecord文件失败。 
- MRMOpenForAppendError - 打开MindRecord文件追加数据失败。 
 
 - 样例: - >>> from mindspore.mindrecord import FileWriter >>> >>> data = [{"file_name": "0.jpg", "label": 0, ... "data": b"\x10c\xb3w\xa8\xee$o&<q\x8c\x8e(\xa2\x90\x90\x96\xbc\xb1\x1e\xd4QER\x13?\xff"}] >>> writer = FileWriter(file_name="test.mindrecord", shard_num=1, overwrite=True) >>> schema_json = {"file_name": {"type": "string"}, "label": {"type": "int32"}, "data": {"type": "bytes"}} >>> writer.add_schema(schema_json, "test_schema") >>> writer.write_raw_data(data) >>> writer.commit() >>> >>> write_append = FileWriter.open_for_append("test.mindrecord") >>> for i in range(9): ... data = [{"file_name": str(i+1) + ".jpg", "label": i, ... "data": b"\x10c\xb3w\xa8\xee$o&<q\x8c\x8e(\xa2\x90\x90\x96\xbc\xb1\x1e\xd4QER\x13?\xff"}] ... write_append.write_raw_data(data) >>> write_append.commit() 
 - set_header_size(header_size)[源代码]
- 设置MindRecord文件的header,其中包含shard信息、schema信息、page的元信息等。 header越大,MindRecord文件可以存储更多的元信息。如果header大于默认大小(16MB),需要调用本函数来设置合适的大小。 - 参数:
- header_size (int) - header大小,单位:字节,可设置范围为16*1024(16KB)到128*1024*1024(128MB)。 
 
- 异常:
- MRMInvalidHeaderSizeError - 设置header大小失败。 
 
 - 样例: - >>> from mindspore.mindrecord import FileWriter >>> writer = FileWriter(file_name="test.mindrecord", shard_num=1) >>> writer.set_header_size(1 << 25) # 32MB 
 - set_page_size(page_size)[源代码]
- 设置存储数据的page大小,page分为两种类型:raw page和blob page。 page越大,page可以存储更多的数据。如果单个样本大于默认大小(32MB),需要调用本函数来设置合适的大小。 - 参数:
- page_size (int) - page大小,单位:字节,可设置范围为32*1024(32KB)到256*1024*1024(256MB)。 
 
- 异常:
- MRMInvalidPageSizeError - 设置page大小失败。 
 
 - 样例: - >>> from mindspore.mindrecord import FileWriter >>> writer = FileWriter(file_name="test.mindrecord", shard_num=1) >>> writer.set_page_size(1 << 26) # 64MB 
 - write_raw_data(raw_data, parallel_writer=False)[源代码]
- 根据schema校验用户自定义数据后,将数据转换为一系列连续的MindRecord格式的数据集文件。 - 说明 - 请参考 - mindspore.mindrecord.FileWriter类的样例代码。- 参数:
- raw_data (list[dict]) - 用户自定义数据的列表。 
- parallel_writer (bool,可选) - 如果为 - True,则并行写入用户自定义数据。默认值:- False。
 
- 异常:
- ParamTypeError - 索引字段无效。 
- MRMOpenError - 打开MindRecord文件失败。 
- MRMValidateDataError - 数据校验失败。 
- MRMSetHeaderError - 设置MindRecord文件的header失败。 
- MRMWriteDatasetError - 写入MindRecord格式的数据集失败。 
- TypeError - 参数 parallel_writer 不是bool类型。 
 
 
 
- class mindspore.mindrecord.FileReader(file_name, num_consumer=4, columns=None, operator=None)[源代码]
- 读取MindRecord格式数据集。 - 说明 - 如果 file_name 是文件路径的字符串,则会尝试加载同一批转换生成的所有MindRecord文件,如果缺少其中某个MindRecord文件,则会引发异常。 
- 如果 file_name 是文件路径组成的列表,则只加载列表中指定的MindRecord文件。 
- 参数 operator 未发挥任何作用,会逐步废弃。 
 - 参数:
- file_name (str, list[str]) - MindRecord格式的数据集文件路径或文件路径组成的列表。 
- num_consumer (int,可选) - 加载数据的并发数。默认值: - 4。不应小于1或大于处理器的核数。
- columns (list[str],可选) - MindRecord中待读取数据列的列表。默认值: - None,读取所有的数据列。
- operator (int,可选) - 保留参数。默认值: - None。
 
- 异常:
- ParamValueError - file_name 、num_consumer 或 columns 无效。 
 
 - 样例: - >>> from mindspore.mindrecord import FileReader >>> >>> mindrecord_file = "/path/to/mindrecord/file" >>> reader = FileReader(file_name=mindrecord_file) >>> >>> # create iterator for mindrecord and get saved data >>> for _, item in enumerate(reader.get_next()): ... ori_data = item >>> reader.close() - close()[源代码]
- 停止数据集加载并且关闭文件句柄。 - 说明 - 请参考 - mindspore.mindrecord.FileReader类的样例代码。
 - get_next()[源代码]
- 按列名一次返回下一批的数据。 - 说明 - 请参考 - mindspore.mindrecord.FileReader类的样例代码。- 返回:
- dict,下一批数据,键值与数据列名相同。 
- 异常:
- MRMUnsupportedSchemaError - 当schema无效。 
 
 
 
- class mindspore.mindrecord.MindPage(file_name, num_consumer=4)[源代码]
- 以分页方式读取MindRecord文件的类。 - 参数:
- file_name (Union[str, list[str]]) - MindRecord格式的数据集文件或文件列表。 
- num_consumer (int,可选) - 加载数据的并发数。默认值: - 4。不应小于1或大于处理器的核数。
 
- 异常:
- ParamValueError - file_name 不是str类型或list[str]类型。 
- ParamValueError - num_consumer 不是int类型。 
 
 - 样例: - >>> from mindspore.mindrecord import MindPage >>> >>> mindrecord_file = "/path/to/mindrecord/file" >>> mind_page = MindPage(mindrecord_file) >>> >>> # get all the index fields >>> fields = mind_page.candidate_fields >>> >>> # set the field to be retrieved >>> mind_page.category_field = "file_name" >>> >>> # get all the group info >>> info = mind_page.read_category_info() >>> >>> # get the row by id which is from category info >>> row_by_id = mind_page.read_at_page_by_id(0, 0, 1) >>> >>> # get the row by name which is from category info >>> row_by_name = mind_page.read_at_page_by_name("8.jpg", 0, 1) - property candidate_fields
- 返回用于数据分组的候选category字段。 - 说明 - 请参考 - mindspore.mindrecord.MindPage类的样例代码。- 返回:
- list[str],候选category 字段。 
 
 - property category_field
- 设置或者返回用于数据分组的category字段。 - 说明 - 请参考 - mindspore.mindrecord.MindPage类的样例代码。- 返回:
- list[str],category字段。 
 
 - read_at_page_by_id(category_id, page, num_row)[源代码]
- 以分页方式按category ID进行查询。 - 说明 - 请参考 - mindspore.mindrecord.MindPage类的样例代码。- 参数:
- category_id (int) - category ID,参考 read_category_info 函数的返回值。 
- page (int) - 分页的索引。 
- num_row (int) - 每个分页的行数。 
 
- 返回:
- list[dict],根据category ID查询的数据。 
- 异常:
- ParamValueError - 参数无效。 
- MRMFetchDataError - 无法按category ID获取数据。 
- MRMUnsupportedSchemaError - schema无效。 
 
 
 - read_at_page_by_name(category_name, page, num_row)[源代码]
- 以分页方式按category字段进行查询。 - 说明 - 请参考 - mindspore.mindrecord.MindPage类的样例代码。- 参数:
- category_name (str) - category字段对应的字符,参考 read_category_info 函数的返回值。 
- page (int) - 分页的索引。 
- num_row (int) - 每个分页的行数。 
 
- 返回:
- list[dict],根据category字段查询的数据。 
 
 - read_category_info()[源代码]
- 当数据按指定的category字段进行分组时,返回category信息。 - 返回结果类似如下,其中 key 表示索引字段名,categories 代表针对索引的统计信息。 - {"categories":[{"count":1,"id":0,"name":"0.jpg"}, {"count":1,"id":1,"name":"1.jpg"}, {"count":1,"id":2,"name":"2.jpg"}, {"count":1,"id":3,"name":"3.jpg"}], "key":"file_name_0"} - 说明 - 请参考 - mindspore.mindrecord.MindPage类的样例代码。- 返回:
- str,分组信息的描述。 
- 异常:
- MRMReadCategoryInfoError - 读取category信息失败。 
 
 
 
- class mindspore.mindrecord.Cifar10ToMR(source, destination)[源代码]
- 将CIFAR-10数据集(需要是Python版本的,名字类似:cifar-10-python.tar.gz)转换为MindRecord格式数据集。 - 参数:
- source (str) - 待转换的CIFAR-10数据集文件所在目录的路径。 
- destination (str) - 转换生成的MindRecord文件路径,需提前创建目录并且目录下不能存在同名文件。 
 
- 异常:
- ValueError - source 或 destination 无效。 
 
 - 样例: - >>> from mindspore.mindrecord import Cifar10ToMR >>> >>> cifar10_dir = "/path/to/cifar10" >>> mindrecord_file = "/path/to/mindrecord/file" >>> cifar10_to_mr = Cifar10ToMR(cifar10_dir, mindrecord_file) >>> cifar10_to_mr.transform() - transform(fields=None)[源代码]
- 执行从CIFAR-10数据集到MindRecord格式数据集的转换。 - 说明 - 请参考 - mindspore.mindrecord.Cifar10ToMR类的样例代码。- 参数:
- fields (list[str],可选) - 索引字段的列表。默认值: - None。 索引字段的设置请参考函数- mindspore.mindrecord.FileWriter.add_index()。
 
- 异常:
- ParamTypeError - 设置MindRecord索引字段失败。 
- MRMOpenError - 新建MindRecord文件失败。 
- MRMValidateDataError - 原始数据集数据异常。 
- MRMSetHeaderError - 设置MindRecord文件头失败。 
- MRMWriteDatasetError - 创建MindRecord索引失败。 
- ValueError - 参数 fields 不合法。 
 
 
 
- class mindspore.mindrecord.Cifar100ToMR(source, destination)[源代码]
- 将CIFAR-100数据集(需要是Python版本的,名字类似:cifar-100-python.tar.gz)转换为MindRecord格式数据集。 - 参数:
- source (str) - 待转换的CIFAR-100数据集文件所在目录的路径。 
- destination (str) - 转换生成的MindRecord文件路径,需提前创建目录并且目录下不能存在同名文件。 
 
- 异常:
- ValueError - 参数 source 或 destination 无效。 
 
 - 样例: - >>> from mindspore.mindrecord import Cifar100ToMR >>> >>> cifar100_dir = "/path/to/cifar100" >>> mindrecord_file = "/path/to/mindrecord/file" >>> cifar100_to_mr = Cifar100ToMR(cifar100_dir, mindrecord_file) >>> cifar100_to_mr.transform() - transform(fields=None)[源代码]
- 执行从CIFAR-100数据集到MindRecord格式数据集的转换。 - 说明 - 请参考 - mindspore.mindrecord.Cifar100ToMR类的样例代码。- 参数:
- fields (list[str],可选) - 索引字段的列表,例如[‘fine_label’, ‘coarse_label’]。默认值: - None。 索引字段的设置请参考函数- mindspore.mindrecord.FileWriter.add_index()。
 
- 异常:
- ParamTypeError - 设置MindRecord索引字段失败。 
- MRMOpenError - 新建MindRecord文件失败。 
- MRMValidateDataError - 原始数据集数据异常。 
- MRMSetHeaderError - 设置MindRecord文件头失败。 
- MRMWriteDatasetError - 创建MindRecord索引失败。 
- ValueError - 参数 fields 不合法。 
 
 
 
- class mindspore.mindrecord.CsvToMR(source, destination, columns_list=None, partition_number=1)[源代码]
- 将CSV格式数据集转换为MindRecord格式数据集。 - 参数:
- source (str) - 待转换的CSV文件路径。 
- destination (str) - 转换生成的MindRecord文件路径,需提前创建目录并且目录下不能存在同名文件。 
- columns_list (list[str],可选) - CSV中待读取数据列的列表。默认值: - None,读取所有的数据列。
- partition_number (int,可选) - 生成MindRecord的文件个数。默认值: - 1。
 
- 异常:
- ValueError - 参数 source 、destination 、partition_number 无效。 
- RuntimeError - 参数 columns_list 无效。 
 
 - 样例: - >>> from mindspore.mindrecord import CsvToMR >>> >>> csv_file = "/path/to/csv/file" >>> mindrecord_file = "/path/to/mindrecord/file" >>> csv_to_mr = CsvToMR(csv_file, mindrecord_file) >>> csv_to_mr.transform() - transform()[源代码]
- 执行从CSV格式数据集到MindRecord格式数据集的转换。 - 说明 - 请参考 - mindspore.mindrecord.CsvToMR类的样例代码。- 异常:
- ParamTypeError - 设置MindRecord索引字段失败。 
- MRMOpenError - 新建MindRecord文件失败。 
- MRMValidateDataError - 原始数据集数据异常。 
- MRMSetHeaderError - 设置MindRecord文件头失败。 
- MRMWriteDatasetError - 创建MindRecord索引失败。 
- IOError - 参数 source 不存在。 
- ValueError - CSV文件首行为列名,每个字段不能以数字开头。 
 
 
 
- class mindspore.mindrecord.ImageNetToMR(map_file, image_dir, destination, partition_number=1)[源代码]
- 将ImageNet数据集转换为MindRecord格式数据集。 - 参数:
- map_file (str) - 标签映射文件的路径。该文件可通过命令: - ls -l [image_dir] | grep -vE "总用量|total|\." | awk -F " " '{print $9, NR-1;}' > [file_path]生成,其中 image_dir 为ImageNet数据集的目录路径, file_path 为生成的 map_file 文件 。 map_file 文件内容示例如下:- n01440764 0 n01443537 1 n01484850 2 n01491361 3 ... n15075141 999 
- image_dir (str) - ImageNet数据集的目录路径,目录中包含类似n01440764、n01443537、n01484850和n15075141的子目录。 
- destination (str) - 转换生成的MindRecord文件路径,需提前创建目录并且目录下不能存在同名文件。 
- partition_number (int,可选) - 生成MindRecord的文件个数。默认值: - 1。
 
- 异常:
- ValueError - 参数 map_file 、image_dir 或 destination 无效。 
 
 - 样例: - >>> from mindspore.mindrecord import ImageNetToMR >>> >>> map_file = "/path/to/imagenet/map_file" >>> imagenet_dir = "/path/to/imagenet/train" >>> mindrecord_file = "/path/to/mindrecord/file" >>> imagenet_to_mr = ImageNetToMR(map_file, imagenet_dir, mindrecord_file, 8) >>> imagenet_to_mr.transform() - transform()[源代码]
- 执行从ImageNet数据集到MindRecord格式数据集的转换。 - 说明 - 请参考 - mindspore.mindrecord.ImageNetToMR类的样例代码。- 异常:
- ParamTypeError - 设置MindRecord索引字段失败。 
- MRMOpenError - 新建MindRecord文件失败。 
- MRMValidateDataError - 原始数据集数据异常。 
- MRMSetHeaderError - 设置MindRecord文件头失败。 
- MRMWriteDatasetError - 创建MindRecord索引失败。 
 
 
 
- class mindspore.mindrecord.MnistToMR(source, destination, partition_number=1)[源代码]
- 将MNIST数据集转换为MindRecord格式数据集。 - 参数:
- source (str) - 数据集目录路径,其包含t10k-images-idx3-ubyte.gz、train-images-idx3-ubyte.gz、t10k-labels-idx1-ubyte.gz和train-labels-idx1-ubyte.gz数据集文件。 
- destination (str) - 转换生成的MindRecord文件路径,需提前创建目录并且目录下不能存在同名文件。 
- partition_number (int,可选) - 生成MindRecord的文件个数。默认值: - 1。
 
- 异常:
- ValueError - 参数 source 、 destination 、 partition_number 无效。 
 
 - 样例: - >>> from mindspore.mindrecord import MnistToMR >>> >>> mnist_dir = "/path/to/mnist" >>> mindrecord_file = "/path/to/mindrecord/file" >>> mnist_to_mr = MnistToMR(mnist_dir, mindrecord_file) >>> mnist_to_mr.transform() - transform()[源代码]
- 执行从MNIST数据集到MindRecord格式数据集的转换。 - 说明 - 请参考 - mindspore.mindrecord.MnistToMR类的样例代码。- 异常:
- ParamTypeError - 设置MindRecord索引字段失败。 
- MRMOpenError - 新建MindRecord文件失败。 
- MRMValidateDataError - 原始数据集数据异常。 
- MRMSetHeaderError - 设置MindRecord文件头失败。 
- MRMWriteDatasetError - 创建MindRecord索引失败。 
 
 
 
- class mindspore.mindrecord.TFRecordToMR(source, destination, feature_dict, bytes_fields=None)[源代码]
- 将TFRecord格式数据集转换为MindRecord格式数据集。 - 参数:
- source (str) - 待转换的TFRecord文件路径。 
- destination (str) - 转换生成的MindRecord文件路径,需提前创建目录并且目录下不能存在同名文件。 
- feature_dict (dict[str, FixedLenFeature]) - TFRecord的feature类别的字典,当前支持 FixedLenFeature 类型。 
- bytes_fields (list[str],可选) - feature_dict 中的字节字段,可以为字节类型的图像字段。默认值: - None,表示没有诸如图像的二进制字段。
 
- 异常:
- ValueError - 无效参数。 
- Exception - 找不到TensorFlow模块或其版本不正确。 
 
 - 样例: - >>> from mindspore.mindrecord import TFRecordToMR >>> import tensorflow as tf >>> >>> tfrecord_file = "/path/to/tfrecord/file" >>> mindrecord_file = "/path/to/mindrecord/file" >>> feature_dict = {"file_name": tf.io.FixedLenFeature([], tf.string), ... "image_bytes": tf.io.FixedLenFeature([], tf.string), ... "int64_scalar": tf.io.FixedLenFeature([], tf.int64), ... "float_scalar": tf.io.FixedLenFeature([], tf.float32), ... "int64_list": tf.io.FixedLenFeature([6], tf.int64), ... "float_list": tf.io.FixedLenFeature([7], tf.float32)} >>> tfrecord_to_mr = TFRecordToMR(tfrecord_file, mindrecord_file, feature_dict, ["image_bytes"]) >>> tfrecord_to_mr.transform() - transform()[源代码]
- 执行从TFRecord格式数据集到MindRecord格式数据集的转换。 - 说明 - 请参考 - mindspore.mindrecord.TFRecordToMR类的样例代码。- 异常:
- ParamTypeError - 设置MindRecord索引字段失败。 
- MRMOpenError - 新建MindRecord文件失败。 
- MRMValidateDataError - 原始数据集数据异常。 
- MRMSetHeaderError - 设置MindRecord文件头失败。 
- MRMWriteDatasetError - 创建MindRecord索引失败。 
 
 
 
- mindspore.mindrecord.set_hash_mode(hash_mode)[源代码]
- 设置MindRecord数据格式的完整性校验算法。 - 参数:
- hash_mode (Union[str, function]) - 指定hash算法。 支持的hash算法有: - None、- "sha256"、- "sha384"、- "sha512"、- "sha3_256"、- "sha3_384"、- "sha3_512"和用户自定义hash算法。 其中:- None代表不启用文件完整性校验。
 
- 异常:
- ValueError - 参数 hash_mode 无效或者自定义hash算法不能被调用执行。 
 
 - 样例: - >>> from mindspore.mindrecord import set_hash_mode >>> >>> set_hash_mode("sha256") 
- mindspore.mindrecord.set_enc_key(enc_key)[源代码]
- 设置MindRecord数据格式的加密密钥。 - 说明 - 当加密算法是 - "SM4-CBC"时,仅支持16位长度的密钥。- 参数:
- enc_key (str) - 用于加密的密钥,有效长度为16、24或者32。其中: - None代表不启用加密。
 
- 异常:
- ValueError - 参数 enc_key 不是字符串或者长度错误。 
 
 - 样例: - >>> from mindspore.mindrecord import set_enc_key >>> >>> set_enc_key("0123456789012345") 
- mindspore.mindrecord.set_enc_mode(enc_mode='AES-GCM')[源代码]
- 设置MindRecord数据格式的加密算法。 - 参数:
- enc_mode (Union[str, function], 可选) - 指定加密模式,当设置 enc_key 时启用。 支持的加密选项有: - "AES-GCM"、- "AES-CBC"、- "SM4-CBC"和用户自定义加密算法。默认值:- "AES-GCM"。 如果是自定义加密,用户需要自己保证加密正确性,并且在出错时报异常。
 
- 异常:
- ValueError - 参数 enc_mode 无效或者自定义加密不能被调用执行。 
 
 - 样例: - >>> from mindspore.mindrecord import set_enc_mode >>> >>> set_enc_mode("AES-GCM") 
- mindspore.mindrecord.set_dec_mode(dec_mode='AES-GCM')[源代码]
- 设置MindRecord数据格式的解密算法。 - 如果使用的是内置 enc_mode ,且没有指定 dec_mode ,则使用 enc_mode 指定的加密算法进行解密。 如果使用自定义加密函数,则必须在读取时指定自定义解密函数。 - 参数:
- dec_mode (Union[str, function], 可选) - 指定解密模式,当设置 enc_key 时启用。 支持的解密选项有: - "AES-GCM"、- "AES-CBC"、- "SM4-CBC"和用户自定义解密算法。默认值:- "AES-GCM"。 其中:- None代表不设置解密算法。如果是自定义解密,用户需要自己保证解密正确性,并且在出错时报异常。
 
- 异常:
- ValueError - 参数 dec_mode 无效或者自定义解密不能被调用执行。 
 
 - 样例: - >>> from mindspore.mindrecord import set_dec_mode >>> >>> set_dec_mode("AES-GCM")