mindspore_lite.Converter
- class mindspore_lite.Converter(fmk_type, model_file, output_file, weight_file='', config_file='', weight_fp16=False, input_shape=None, input_format=Format.NHWC, input_data_type=DataType.FLOAT32, output_data_type=DataType.FLOAT32, export_mindir=ModelType.MINDIR_LITE, decrypt_key='', decrypt_mode='AES-GCM', enable_encryption=False, encrypt_key='', infer=False, train_model=False, no_fusion=False)[源代码]
转换用于转换第三方模型。
Note
参数默认值是None时表示不设置。
- 参数:
fmk_type (FmkType) - 输入模型框架类型。选项:FmkType.TF | FmkType.CAFFE | FmkType.ONNX | FmkType.MINDIR | FmkType.TFLITE | FmkType.PYTORCH。
model_file (str) - 输入模型文件路径。e.g. “/home/user/model.prototxt”。选项:TF: “*.pb” | CAFFE: “*.prototxt” | ONNX: “*.onnx” | MINDIR: “*.mindir” | TFLITE: “*.tflite” | PYTORCH: “*.pt or *.pth”。
output_file (str) - 输出模型文件路径。可自动生成.ms后缀。e.g. “/home/user/model.prototxt”,它将生成名为model.prototxt.ms的模型在/home/user/路径下。
weight_file (str,可选) - 输入模型权重文件。仅当输入模型框架类型为FmkType.CAFFE时必选。e.g. “/home/user/model.caffemodel”。默认值:””。
config_file (str,可选) - 作为训练后量化或离线拆分算子并行的配置文件路径,禁用算子融合功能并将插件设置为so路径。默认值:””。
weight_fp16 (bool,可选) - 在Float16数据类型中序列化常量张量,仅对Float32数据类型中的常量张量有效。默认值:””。
input_shape (dict{str: list[int]},可选) - 设置模型输入的维度,输入维度的顺序与原始模型一致。对于某些模型,模型结构可以进一步优化,但转换后的模型可能会失去动态形状的特征。e.g. {“inTensor1”: [1, 32, 32, 32], “inTensor2”: [1, 1, 32, 32]}。默认值:””。
input_format (Format,可选) - 指定导出模型的输入格式。仅对四维输入有效。选项:Format.NHWC | Format.NCHW。默认值:Format.NHWC。
input_data_type (DataType,可选) - 输入张量的数据类型,默认与模型中定义的类型相同。默认值:DataType.FLOAT32。
output_data_type (DataType,可选) - 输出张量的数据类型,默认与模型中定义的类型相同。默认值:DataType.FLOAT32。
export_mindir (ModelType,可选) - 导出模型文件的类型。默认值:ModelType.MINDIR_LITE。
decrypt_key (str,可选) - 用于解密文件的密钥,以十六进制字符表示。仅当fmk_type为FmkType.MINDIR时有效。默认值:””。
decrypt_mode (str,可选) - MindIR文件的解密方法。仅在设置decrypt_key时有效。选项:”AES-GCM” | “AES-CBC”。默认值:”AES-GCM”。
enable_encryption (bool,可选) - 是否导出加密模型。默认值:False。
encrypt_key (str,可选) - 用于加密文件的密钥,以十六进制字符表示。仅支持decrypt_mode是”AES-GCM”,密钥长度为16。默认值:””。
infer (bool,可选) - 转换后是否进行预推理。默认值:False。
train_model (bool,可选) - 模型是否将在设备上进行训练。默认值:False。
no_fusion (bool,可选) - 避免融合优化,默认允许融合优化。默认值:False。
- 异常:
TypeError - fmk_type 不是FmkType类型。
TypeError - model_file 不是str类型。
TypeError - output_file 不是str类型。
TypeError - weight_file 不是str类型。
TypeError - config_file 不是str类型。
TypeError - weight_fp16 不是bool类型。
TypeError - input_shape 既不是dict类型也不是None。
TypeError - input_shape 是dict类型,但key不是str类型。
TypeError - input_shape 是dict类型,key是str类型,但value不是list类型。
TypeError - input_shape 是dict类型,key是str类型,value是list类型,但value的元素不是int类型。
TypeError - input_format 不是Format类型。
TypeError - input_data_type 不是DataType类型。
TypeError - output_data_type 不是DataType类型。
TypeError - export_mindir 不是ModelType类型。
TypeError - decrypt_key 不是str类型。
TypeError - decrypt_mode 不是str类型。
TypeError - enable_encryption 不是bool类型。
TypeError - encrypt_key 不是str类型。
TypeError - infer 不是bool类型。
TypeError - train_model 不是bool类型。
TypeError - no_fusion 不是bool类型。
ValueError - 当 input_format 是Format类型时, input_format 既不是Format.NCHW也不是Format.NHWC。
ValueError - 当 decrypt_mode 是str类型时, decrypt_mode 既不是”AES-GCM”也不是”AES-CBC”。
RuntimeError - model_file 文件路径不存在。
RuntimeError - 当 model_file 不是””时, model_file 文件路径不存在。
RuntimeError - 当 config_file 不是””时, config_file 文件路径不存在。
样例:
>>> import mindspore_lite as mslite >>> converter = mslite.Converter(mslite.FmkType.TFLITE, "./mobilenetv2/mobilenet_v2_1.0_224.tflite", ... "mobilenet_v2_1.0_224.tflite") >>> print(converter) config_file: , config_info: {}, weight_fp16: False, input_shape: {}, input_format: Format.NHWC, input_data_type: DataType.FLOAT32, output_data_type: DataType.FLOAT32, export_mindir: ModelType.MINDIR_LITE, decrypt_key: , decrypt_mode: AES-GCM, enable_encryption: False, encrypt_key: , infer: False, train_model: False, no_fusion: False.
- converter()[源代码]
执行转换,将第三方模型转换为MindSpore模型。
- 异常:
RuntimeError - 转换模型失败。
样例:
>>> import mindspore_lite as mslite >>> converter = mslite.Converter(mslite.FmkType.TFLITE, "./mobilenetv2/mobilenet_v2_1.0_224.tflite", ... "mobilenet_v2_1.0_224.tflite") >>> converter.converter() CONVERT RESULT SUCCESS:0
- get_config_info()[源代码]
获取转换的配置信息。配套set_config_info方法使用,用于在线推理场景。在get_config_info前,请先用set_config_info方法赋值。
- 返回:
dict{str: dict{str: str}},在转换中设置的配置信息。
样例:
>>> import mindspore_lite as mslite >>> converter = mslite.Converter(mslite.FmkType.TFLITE, "./mobilenetv2/mobilenet_v2_1.0_224.tflite", ... "mobilenet_v2_1.0_224.tflite") >>> section = "common_quant_param" >>> config_info_in = {"quant_type":"WEIGHT_QUANT"} >>> converter.set_config_info(section, config_info_in) >>> config_info_out = converter.get_config_info() >>> print(config_info_out) {'common_quant_param': {'quant_type': 'WEIGHT_QUANT'}}
- set_config_info(section, config_info)[源代码]
设置转换时的配置信息。配套get_config_info方法使用,用于在线推理场景。
- 参数:
section (str) - 配置参数的类别。配合config_info一起,设置confile的个别参数。e.g. 对于section是”common_quant_param”,config_info是{“quant_type”:”WEIGHT_QUANT”}。默认值:None。 有关训练后量化的配置参数,请参见 quantization。 有关扩展的配置参数,请参见 extension。
“common_quant_param”:公共量化参数部分。量化的配置参数之一。
“mixed_bit_weight_quant_param”:混合位权重量化参数部分。量化的配置参数之一。
“full_quant_param”:全量化参数部分。量化的配置参数之一。
“data_preprocess_param”:数据预处理参数部分。量化的配置参数之一。
“registry”:扩展配置参数部分。扩展的配置参数之一。
config_info (dict{str: str},可选) - 配置参数列表。配合section一起,设置confile的个别参数。e.g. 对于section是”common_quant_param”,config_info是{“quant_type”:”WEIGHT_QUANT”}。默认值:None。 有关训练后量化的配置参数,请参见 quantization。 有关扩展的配置参数,请参见 extension。
- 异常:
TypeError - section 不是str类型。
TypeError - config_info 不是dict类型。
TypeError - config_info 是dict类型,但key不是str类型。
TypeError - config_info 是dict类型,key是str类型,但value不是str类型。
样例:
>>> import mindspore_lite as mslite >>> converter = mslite.Converter(mslite.FmkType.TFLITE, "./mobilenetv2/mobilenet_v2_1.0_224.tflite", ... "mobilenet_v2_1.0_224.tflite") >>> section = "common_quant_param" >>> config_info = {"quant_type":"WEIGHT_QUANT"} >>> converter.set_config_info(section, config_info)