mindspore_lite.Model
- class mindspore_lite.Model[source]
The Model class defines a MindSpore Lite’s model, facilitating computational graph management.
Examples
>>> 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: dict = None)[source]
Load and build a model from file.
- Parameters
model_path (str) – Path of the input model when build from file. For example, “/home/user/model.mindir”. Model should use .mindir as suffix.
model_type (ModelType) – Define The type of input model file. Option is
ModelType.MINDIR
. For details, see ModelType .context (Context, optional) – Define the context used to transfer options during execution. Default:
None
.None
means the Context with cpu target.config_path (str, optional) –
Define the config file path. the config file is used to transfer user defined options during build model. In the following scenarios, users may need to set the parameter. For example, “/home/user/config.txt”. Default:
""
.Usage 1: Set mixed precision inference. The content and description of the configuration file are as follows:
[execution_plan] [op_name1]=data_Type: float16 (The operator named op_name1 sets the data type as float16) [op_name2]=data_Type: float32 (The operator named op_name2 sets the data type as float32)
Usage 2: When GPU inference, set the configuration of TensorRT. The content and description of the configuration file are as follows:
[ms_cache] serialize_Path=[serialization model path](storage path of serialization model) [gpu_context] input_shape=input_Name: [input_dim] (Model input dimension, for dynamic shape) dynamic_Dims=[min_dim~max_dim] (dynamic dimension range of model input, for dynamic shape) opt_Dims=[opt_dim] (the optimal input dimension of the model, for dynamic shape)
config_dict (dict, optional) –
When you set config in this dict, the priority is higher than the configuration items in config_path.
Set rank table file for inference. The content of the configuration file is as follows:
[ascend_context] rank_table_file=[path_a](storage initial path of the rank table file)
When set
config_dict = {"ascend_context" : {"rank_table_file" : "path_b"}}
The the path_b from the config_dict will be used to compile the model.
- Raises
TypeError – model_path is not a str.
TypeError – model_type is not a ModelType.
TypeError – context is neither a Context nor
None
.TypeError – config_path is not a str.
RuntimeError – model_path does not exist.
RuntimeError – config_path does not exist.
RuntimeError – load configuration by config_path failed.
RuntimeError – build from file failed.
Examples
>>> # 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()[source]
Obtains all input Tensors of the model.
- Returns
list[Tensor], the input Tensor list of the model.
Examples
>>> import mindspore_lite as mslite >>> model = mslite.Model() >>> model.build_from_file("mobilenetv2.mindir", mslite.ModelType.MINDIR) >>> inputs = model.get_inputs()
- get_outputs()[source]
Obtains all output information Tensors of the model.
- Returns
list[TensorMeta], the output TensorMeta list of the model.
- predict(inputs, outputs=None)[source]
Inference model.
- Parameters
- Returns
list[Tensor], the output Tensor list of the model.
- Raises
TypeError – inputs is not a list.
TypeError – outputs is not a list.
TypeError – inputs is a list, but the elements are not Tensor.
TypeError – outputs is a list, but the elements are not Tensor.
RuntimeError – predict model failed.
Examples
>>> # 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)[source]
Resizes the shapes of inputs. This method is used in the following scenarios:
If multiple inputs of the same size need to predicted, you can set the batch dimension of dims to the number of inputs, then multiple inputs can be performed inference at the same time.
Adjust the input size to the specify shape.
When the input is a dynamic shape (a dimension of the shape of the model input contains -1), -1 must be replaced by a fixed dimension through resize .
The shape operator contained in the model is dynamic shape (a dimension of the shape operator contains -1).
- Parameters
- Raises
TypeError – inputs is not a list.
TypeError – inputs is a list, but the elements are not Tensor.
TypeError – dims is not a list.
TypeError – dims is a list, but the elements are not list.
TypeError – dims is a list, the elements are list, but the element’s elements are not int.
ValueError – The size of inputs is not equal to the size of dims .
RuntimeError – resize inputs failed.
Examples
>>> 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]
- update_weights(weights)[source]
Update constant weight of the model node.
- Parameters
weights (list[list[Tensor]]) – A list that includes all update weight Tensors.
- Raises
RuntimeError – weights is not a list(list).
RuntimeError – weights is a list, but the elements are not Tensor.
RuntimeError – update weight failed.
- Tutorial Examples: