mindspore_lite.Model
- class mindspore_lite.Model[源代码]
- Model 类定义MindSpore Lite模型,便于计算图管理。 - 样例: - >>> import mindspore_lite as mslite >>> model = mslite.Model() >>> print(model) model_path: . - build_from_file(model_path, model_type, context=None, config_path='', config_dict=None, dec_key=None, dec_mode='AES-GCM', dec_num_parallel=0)[源代码]
- 从文件加载并构建模型。 - 参数:
- model_path (str) - 定义输入模型文件的路径,例如:"/home/user/model.mindir"。模型应该使用.mindir作为后缀。 
- model_type (ModelType) - 定义输入模型文件的类型。选项有 - ModelType::MINDIR。有关详细信息,请参见 模型类型 。
- context (Context,可选) - 定义上下文,用于在执行期间传递选项。默认值: - None。- None表示设置target为cpu的Context。
- config_path (str,可选) - 定义配置文件的路径,用于在构建模型期间传递用户定义选项。在以下场景中,用户可能需要设置参数。例如:"/home/user/config.txt"。默认值: - ""。- 用法1 - 进行混合精度推理的设置,配置文件内容及说明如下: - [execution_plan] [op_name1]=data_type:float16(名字为op_name1的算子设置数据类型为float16) [op_name2]=data_type:float32(名字为op_name2的算子设置数据类型为float32) 
- 用法2 - 在使用GPU推理时,进行TensorRT设置,配置文件内容及说明如下: - [ms_cache] serialize_path=[serialization model path](序列化模型的存储路径) [gpu_context] input_shape=input_name:[input_dim](模型输入维度,用于动态shape) dynamic_dims=[min_dim~max_dim](模型输入的动态维度范围,用于动态shape) opt_dims=[opt_dim](模型最优输入维度,用于动态shape) 
 
- config_dict (dict,可选) - 配置参数字典,当使用该字典配置参数时,优先级高于配置文件。 - 推理配置rank table。配置文件中的内容及说明如下: - [ascend_context] rank_table_file=[path_a](使用路径a的rank table) - 同时配置参数字典中如下: - config_dict = {"ascend_context" : {"rank_table_file" : "path_b"}} - 那么配置参数字典中路径b的rank table将覆盖配置文件中的路径a的rank table。 
- dec_key (Bytes, 可选) - 当导入密文模型时,使用该参数传入解密密钥。默认值: - None。
- dec_mode (str, 可选) - 当导入密文模型时,使用该参数指定解密模式。当前支持的解密模式包括:"AES-GCM","AES-CBC"与"SM4-CBC"。默认值: - "AES-GCM"。
- dec_num_parallel (int, 可选) - 当导入密文模型时,使用该参数开启并行解密,并指定并行线程数,取值范围0~64。默认为: - 0。
 
- 异常:
- TypeError - model_path 不是str类型。 
- TypeError - model_type 不是ModelType类型。 
- TypeError - context 既不是Context类型也不是 - None。
- TypeError - config_path 不是str类型。 
- TypeError - dec_key 不是Bytes类型。 
- TypeError - dec_mode 不是str类型。 
- TypeError - dec_num_parallel 不是int类型。 
- RuntimeError - model_path 文件路径不存在。 
- RuntimeError - config_path 文件路径不存在。 
- RuntimeError - 从 config_path 加载配置文件失败。 
- RuntimeError - 从文件加载并构建模型失败。 
- RuntimeError - dec_mode 在密文导入时为空字符串。 
 
 - 样例: - >>> # Testcase 1: build from file with default cpu context. >>> import mindspore_lite as mslite >>> model = mslite.Model() >>> model.build_from_file("mobilenetv2.mindir", mslite.ModelType.MINDIR) >>> print(model) model_path: mobilenetv2.mindir. >>> # Testcase 2: build from file with gpu context. >>> import mindspore_lite as mslite >>> model = mslite.Model() >>> context = mslite.Context() >>> context.target = ["cpu"] >>> model.build_from_file("mobilenetv2.mindir", mslite.ModelType.MINDIR, context) >>> print(model) model_path: mobilenetv2.mindir. 
 - get_inputs()[源代码]
- 获取模型的所有输入Tensor。 - 返回:
- list[Tensor],模型的输入Tensor列表。 
 - 样例: - >>> import mindspore_lite as mslite >>> model = mslite.Model() >>> model.build_from_file("mobilenetv2.mindir", mslite.ModelType.MINDIR) >>> inputs = model.get_inputs() 
 - get_model_info(key)
- 获取模型信息。 - 参数:
- key (str) - 获取模型信息关键字,当前支持user_info、input_shape、dynamic_dims、user_info为用户信息,input_shape为模型输入shape,dynamic_dims为动态分档模型支持的尺寸。 
 
- 异常:
- TypeError - key不是str类型。 
 
 
 - predict(inputs, outputs=None)[源代码]
- 推理模型。 - 参数:
- inputs (list[Tensor]) - 包含所有输入Tensor的顺序列表。 
- outputs (list[Tensor],可选) - 包含所有输出Tensor的顺序列表。 
 
- 返回:
- list[Tensor],模型的输出Tensor列表。 
- 异常:
- TypeError - inputs 不是list类型。 
- TypeError - outputs 不是list类型。 
- TypeError - inputs 是list类型,但元素不是Tensor类型。 
- TypeError - outputs 是list类型,但元素不是Tensor类型。 
- RuntimeError - 预测推理模型失败。 
 
 - 样例: - >>> # 1. predict which indata is from file >>> import mindspore_lite as mslite >>> import numpy as np >>> model = mslite.Model() >>> #default context's target is cpu >>> model.build_from_file("mobilenetv2.mindir", mslite.ModelType.MINDIR) >>> inputs = model.get_inputs() >>> in_data = np.fromfile("input.bin", dtype=np.float32) >>> inputs[0].set_data_from_numpy(in_data) >>> outputs = model.predict(inputs) >>> for output in outputs: ... data = output.get_data_to_numpy() ... print("outputs' shape: ", data.shape) ... outputs' shape: (1,1001) >>> # 2. predict which indata is numpy array >>> import mindspore_lite as mslite >>> import numpy as np >>> model = mslite.Model() >>> model.build_from_file("mobilenetv2.mindir", mslite.ModelType.MINDIR) >>> inputs = model.get_inputs() >>> for input in inputs: ... in_data = np.arange(1 * 3 * 224 * 224, dtype=np.float32).reshape((1, 3, 224, 224)) ... input.set_data_from_numpy(in_data) ... >>> outputs = model.predict(inputs) >>> for output in outputs: ... data = output.get_data_to_numpy() ... print("outputs' shape: ", data.shape) ... outputs' shape: (1,1001) >>> # 3. predict which indata is from new MindSpore Lite's Tensor with numpy array >>> import mindspore_lite as mslite >>> import numpy as np >>> model = mslite.Model() >>> model.build_from_file("mobilenetv2.mindir", mslite.ModelType.MINDIR) >>> inputs = model.get_inputs() >>> input_tensors = [] >>> for input in inputs: ... input_tensor = mslite.Tensor() ... input_tensor.dtype = input.dtype ... input_tensor.shape = input.shape ... input_tensor.format = input.format ... input_tensor.name = input.name ... in_data = np.arange(1 * 3 * 224 * 224, dtype=np.float32).reshape((1, 3, 224, 224)) ... input_tensor.set_data_from_numpy(in_data) ... input_tensors.append(input_tensor) ... >>> outputs = model.predict(input_tensors) >>> for output in outputs: ... data = output.get_data_to_numpy() ... print("outputs' shape: ", data.shape) ... outputs' shape: (1,1001) 
 - resize(inputs, dims)[源代码]
- 调整输入形状的大小。此方法用于以下场景: - 如果需要预测相同大小的多个输入,可以将 dims 的batch(N)维度设置为输入的数量,那么可以同时执行多个输入的推理。 
- 将输入大小调整为指定shape。 
- 当输入是动态shape时(模型输入的shape的维度包含-1),必须通过 resize 把-1换成固定维度。(配置 provider 为 ge 时,模型输入的shape根据输入Tensor的shape,设置成固定维度) 
- 模型中包含的shape算子是动态shape(shape算子的维度包含-1)。 
 - 参数:
- inputs (list[Tensor]) - 包含所有输入Tensor的顺序列表。 
- dims (list[list[int]]) - 定义输入Tensor的新形状的列表,应与输入Tensor的顺序一致。 
 
- 异常:
- TypeError - inputs 不是list类型。 
- TypeError - inputs 是list类型,但元素不是Tensor类型。 
- TypeError - dims 不是list类型。 
- TypeError - dims 是list类型,但元素不是list类型。 
- TypeError - dims 是list类型,元素是list类型,但元素的元素不是int类型。 
- ValueError - inputs 的size不等于 dims 的size。 
- RuntimeError - 调整输入形状的大小失败。 
 
 - 样例: - >>> import mindspore_lite as mslite >>> model = mslite.Model() >>> model.build_from_file("mobilenetv2.mindir", mslite.ModelType.MINDIR) >>> inputs = model.get_inputs() >>> print("Before resize, the first input shape: ", inputs[0].shape) Before resize, the first input shape: [1, 3, 224, 224] >>> model.resize(inputs, [[1, 3, 112, 112]]) >>> print("After resize, the first input shape: ", inputs[0].shape) After resize, the first input shape: [1, 3, 112, 112]