• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# model.h
2
3<!--Kit: MindSpore Lite Kit-->
4<!--Subsystem: AI-->
5<!--Owner: @zhuguodong8-->
6<!--Designer: @zhuguodong8; @jjfeing-->
7<!--Tester: @principal87-->
8<!--Adviser: @ge-yafang-->
9
10## 概述
11
12提供了模型相关接口,可以用于模型创建、模型推理等,该接口是非线程安全的。
13
14**引用文件:** <mindspore/model.h>
15
16**库:** libmindspore_lite_ndk.so
17
18**系统能力:** SystemCapability.Ai.MindSpore
19
20**起始版本:** 9
21
22**相关模块:** [MindSpore](capi-mindspore.md)
23
24## 汇总
25
26### 结构体
27
28| 名称                                                                   | 描述                              |
29|----------------------------------------------------------------------|---------------------------------|
30| [OH_AI_TensorHandleArray](capi-mindspore-oh-ai-tensorhandlearray.md) | 张量数组结构体,用于存储张量数组指针和张量数组长度。      |
31| [OH_AI_ShapeInfo](capi-mindspore-oh-ai-shapeinfo.md)                 | 形状维度大小,预留最大维度是32,当前实际支持的最大维度是8。 |
32| [OH_AI_CallBackParam](capi-mindspore-oh-ai-callbackparam.md)         | 回调函数中传入的算子信息。                   |
33| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md)                                                | 指向模型对象的指针。                                |
34| [OH_AI_TrainCfgHandle](capi-mindspore-oh-ai-traincfghandle.md)                                             | 指向训练配置对象的指针。                                |
35
36### 函数
37
38| 名称 | typedef关键字 | 描述                                                                                                                                                                                                                                                  |
39| -- | -- |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
40| [typedef bool (\*OH_AI_KernelCallBack)(const OH_AI_TensorHandleArray inputs, const OH_AI_TensorHandleArray outputs,const OH_AI_CallBackParam kernel_Info)](#oh_ai_kernelcallback) | OH_AI_KernelCallBack | 回调函数指针。<br> 该函数指针是用于设置[OH_AI_ModelPredict](capi-model-h.md#oh_ai_modelpredict)函数参数中的两个回调函数。<br> 该指针指向的函数需要包含三个参数,其中inputs和outputs对应了算子的输入和输出张量,kernel_Info表示当前算子的信息。<br> 可以通过回调函数监控算子执行的情况,例如统计算子的执行时间,校验算子的正确性等等。                                  |
41| [OH_AI_API OH_AI_ModelHandle OH_AI_ModelCreate(void)](#oh_ai_modelcreate) | - | 创建一个模型对象。                                                                                                                                                                                                                                           |
42| [OH_AI_API void OH_AI_ModelDestroy(OH_AI_ModelHandle *model)](#oh_ai_modeldestroy) | - | 释放一个模型对象。                                                                                                                                                                                                                                           |
43| [OH_AI_API OH_AI_Status OH_AI_ModelBuild(OH_AI_ModelHandle model, const void *model_data, size_t data_size,OH_AI_ModelType model_type, const OH_AI_ContextHandle model_context)](#oh_ai_modelbuild) | - | 从内存缓冲区加载并编译MindSpore模型。<br> 注意,同一个[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)对象仅能传递给[OH_AI_ModelBuild](capi-model-h.md#oh_ai_modelbuild)或者[OH_AI_ModelBuildFromFile](capi-model-h.md#oh_ai_modelbuildfromfile)一次,如果多次调用该函数需要创建多个不同的[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)。 |
44| [OH_AI_API OH_AI_Status OH_AI_ModelBuildFromFile(OH_AI_ModelHandle model, const char *model_path,OH_AI_ModelType model_type, const OH_AI_ContextHandle model_context)](#oh_ai_modelbuildfromfile) | - | 通过模型文件加载并编译MindSpore模型。<br> 注意,同一个[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)对象仅能传递给[OH_AI_ModelBuild](capi-model-h.md#oh_ai_modelbuild)或者[OH_AI_ModelBuildFromFile](capi-model-h.md#oh_ai_modelbuildfromfile)一次,如果多次调用该函数需要创建多个不同的[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)。     |
45| [OH_AI_API OH_AI_Status OH_AI_ModelResize(OH_AI_ModelHandle model, const OH_AI_TensorHandleArray inputs,OH_AI_ShapeInfo *shape_infos, size_t shape_info_num)](#oh_ai_modelresize) | - | 调整已编译模型的输入形状。                                                                                                                                                                                                                                       |
46| [OH_AI_API OH_AI_Status OH_AI_ModelPredict(OH_AI_ModelHandle model, const OH_AI_TensorHandleArray inputs,OH_AI_TensorHandleArray *outputs, const OH_AI_KernelCallBack before,const OH_AI_KernelCallBack after)](#oh_ai_modelpredict) | - | 执行模型推理。                                                                                                                                                                                                                                             |
47| [OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetInputs(const OH_AI_ModelHandle model)](#oh_ai_modelgetinputs) | - | 获取模型的输入张量数组结构体。                                                                                                                                                                                                                                     |
48| [OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetOutputs(const OH_AI_ModelHandle model)](#oh_ai_modelgetoutputs) | - | 获取模型的输出张量数组结构体。                                                                                                                                                                                                                                     |
49| [OH_AI_API OH_AI_TensorHandle OH_AI_ModelGetInputByTensorName(const OH_AI_ModelHandle model, const char *tensor_name)](#oh_ai_modelgetinputbytensorname) | - | 通过张量名获取模型的输入张量。                                                                                                                                                                                                                                     |
50| [OH_AI_API OH_AI_TensorHandle OH_AI_ModelGetOutputByTensorName(const OH_AI_ModelHandle model, const char *tensor_name)](#oh_ai_modelgetoutputbytensorname) | - | 通过张量名获取模型的输出张量。                                                                                                                                                                                                                                     |
51| [OH_AI_API OH_AI_TrainCfgHandle OH_AI_TrainCfgCreate()](#oh_ai_traincfgcreate) | - | 创建训练配置对象指针,仅用于端侧训练。                                                                                                                                                                                                                                 |
52| [OH_AI_API void OH_AI_TrainCfgDestroy(OH_AI_TrainCfgHandle *train_cfg)](#oh_ai_traincfgdestroy) | - | 销毁训练配置对象指针,仅用于端侧训练。                                                                                                                                                                                                                                 |
53| [OH_AI_API char **OH_AI_TrainCfgGetLossName(OH_AI_TrainCfgHandle train_cfg, size_t *num)](#oh_ai_traincfggetlossname) | - | 获取损失函数的名称列表,仅用于端侧训练。                                                                                                                                                                                                                                |
54| [OH_AI_API void OH_AI_TrainCfgSetLossName(OH_AI_TrainCfgHandle train_cfg, const char **loss_name, size_t num)](#oh_ai_traincfgsetlossname) | - | 设置损失函数的名称列表,仅用于端侧训练。                                                                                                                                                                                                                                |
55| [OH_AI_API OH_AI_OptimizationLevel OH_AI_TrainCfgGetOptimizationLevel(OH_AI_TrainCfgHandle train_cfg)](#oh_ai_traincfggetoptimizationlevel) | - | 获取训练配置的优化等级,仅用于端侧训练。                                                                                                                                                                                                                                |
56| [OH_AI_API void OH_AI_TrainCfgSetOptimizationLevel(OH_AI_TrainCfgHandle train_cfg, OH_AI_OptimizationLevel level)](#oh_ai_traincfgsetoptimizationlevel) | - | 设置训练配置的优化等级,仅用于端侧训练。                                                                                                                                                                                                                                |
57| [OH_AI_API OH_AI_Status OH_AI_TrainModelBuild(OH_AI_ModelHandle model, const void *model_data, size_t data_size,OH_AI_ModelType model_type, const OH_AI_ContextHandle model_context,const OH_AI_TrainCfgHandle train_cfg)](#oh_ai_trainmodelbuild) | - | 从内存缓冲区加载训练模型,并将模型编译至可在Device上运行的状态,仅用于端侧训练。                                                                                                                                                                                                         |
58| [OH_AI_API OH_AI_Status OH_AI_TrainModelBuildFromFile(OH_AI_ModelHandle model, const char *model_path,OH_AI_ModelType model_type,const OH_AI_ContextHandle model_context,const OH_AI_TrainCfgHandle train_cfg)](#oh_ai_trainmodelbuildfromfile) | - | 根据路径读取加载训练模型,并将模型编译至可在Device上运行的状态,仅用于端侧训练。                                                                                                                                                                                                         |
59| [OH_AI_API OH_AI_Status OH_AI_RunStep(OH_AI_ModelHandle model, const OH_AI_KernelCallBack before,const OH_AI_KernelCallBack after)](#oh_ai_runstep) | - | 单步训练模型,仅用于端侧训练。                                                                                                                                                                                                                                     |
60| [OH_AI_API OH_AI_Status OH_AI_ModelSetLearningRate(OH_AI_ModelHandle model, float learning_rate)](#oh_ai_modelsetlearningrate) | - | 设置训练的学习率,仅用于端侧训练。                                                                                                                                                                                                                                   |
61| [OH_AI_API float OH_AI_ModelGetLearningRate(OH_AI_ModelHandle model)](#oh_ai_modelgetlearningrate) | - | 获取训练的学习率,仅用于端侧训练。                                                                                                                                                                                                                                   |
62| [OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetWeights(OH_AI_ModelHandle model)](#oh_ai_modelgetweights) | - | 获取模型的所有权重Tensors,仅用于端侧训练。                                                                                                                                                                                                                           |
63| [OH_AI_API OH_AI_Status OH_AI_ModelUpdateWeights(OH_AI_ModelHandle model, const OH_AI_TensorHandleArray new_weights)](#oh_ai_modelupdateweights) | - | 更新模型的权重Tensor内容,仅用于端侧训练。                                                                                                                                                                                                                            |
64| [OH_AI_API bool OH_AI_ModelGetTrainMode(OH_AI_ModelHandle model)](#oh_ai_modelgettrainmode) | - | 获取训练模式。                                                                                                                                                                                                                                             |
65| [OH_AI_API OH_AI_Status OH_AI_ModelSetTrainMode(OH_AI_ModelHandle model, bool train)](#oh_ai_modelsettrainmode) | - | 设置训练模式,仅用于端侧训练。                                                                                                                                                                                                                                     |
66| [OH_AI_API OH_AI_Status OH_AI_ModelSetupVirtualBatch(OH_AI_ModelHandle model, int virtual_batch_multiplier, float lr,float momentum)](#oh_ai_modelsetupvirtualbatch) | - | 设置虚拟batch用于训练,仅用于端侧训练。                                                                                                                                                                                                                              |
67| [OH_AI_API OH_AI_Status OH_AI_ExportModel(OH_AI_ModelHandle model, OH_AI_ModelType model_type, const char *model_file,OH_AI_QuantizationType quantization_type, bool export_inference_only,char **output_tensor_name, size_t num)](#oh_ai_exportmodel) | - | 导出训练模型,仅用于端侧训练。                                                                                                                                                                                                                                     |
68| [OH_AI_API OH_AI_Status OH_AI_ExportModelBuffer(OH_AI_ModelHandle model, OH_AI_ModelType model_type, void *model_data,size_t *data_size, OH_AI_QuantizationType quantization_type,bool export_inference_only, char **output_tensor_name, size_t num)](#oh_ai_exportmodelbuffer) | - | 导出训练模型内存缓存,仅用于端侧训练。                                                                                                                                                                                                                                 |
69| [OH_AI_API OH_AI_Status OH_AI_ExportWeightsCollaborateWithMicro(OH_AI_ModelHandle model, OH_AI_ModelType model_type,const char *weight_file, bool is_inference,bool enable_fp16, char **changeable_weights_name,size_t num)](#oh_ai_exportweightscollaboratewithmicro) | - | 导出模型权重,只能用于micro推理,仅用于端侧训练。                                                                                                                                                                                                                         |
70| [OH_AI_API OH_AI_Status OH_AI_ModelLoadConfig(OH_AI_ModelHandle model, const char *config_path)](#oh_ai_modelloadconfig) | - | 加载模型配置文件。 |
71
72## 函数说明
73
74### OH_AI_KernelCallBack()
75
76```
77typedef bool (*OH_AI_KernelCallBack)(const OH_AI_TensorHandleArray inputs, const OH_AI_TensorHandleArray outputs,const OH_AI_CallBackParam kernel_Info)
78```
79
80**描述**
81
82回调函数指针。<br>该函数指针是用于设置[OH_AI_ModelPredict](capi-model-h.md#oh_ai_modelpredict)函数参数中的两个回调函数。<br>该指针指向的函数需要包含三个参数,其中inputs和outputs对应了算子的输入和输出张量,kernel_Info表示当前算子的信息。<br>可以通过回调函数监控算子执行的情况,例如统计算子的执行时间,校验算子的正确性等等。
83
84**起始版本:** 9
85
86
87**参数:**
88
89| 参数项                                                                                | 描述      |
90|------------------------------------------------------------------------------------|---------|
91| const [OH_AI_TensorHandleArray](capi-mindspore-oh-ai-tensorhandlearray.md) inputs  | 模型输入对应的张量数组结构体。 |
92| const [OH_AI_TensorHandleArray](capi-mindspore-oh-ai-tensorhandlearray.md) outputs | 模型输出对应的张量数组结构体。        |
93| const [OH_AI_CallBackParam](capi-mindspore-oh-ai-callbackparam.md) kernel_Info   | 当前算子的信息。        |
94
95**返回:**
96
97| 类型   | 说明 |
98|------|----|
99| bool | 回调执行是否成功,若成功返回true,失败则返回false。 |
100
101### OH_AI_ModelCreate()
102
103```
104OH_AI_API OH_AI_ModelHandle OH_AI_ModelCreate(void)
105```
106
107**描述**
108
109创建一个模型对象。
110
111**起始版本:** 9
112
113**返回:**
114
115| 类型                              | 说明 |
116|---------------------------------| -- |
117| OH_AI_API [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) | 模型对象指针。 |
118
119### OH_AI_ModelDestroy()
120
121```
122OH_AI_API void OH_AI_ModelDestroy(OH_AI_ModelHandle *model)
123```
124
125**描述**
126
127释放一个模型对象。
128
129**起始版本:** 9
130
131
132**参数:**
133
134| 参数项 | 描述 |
135| -- | -- |
136| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) *model | 模型对象指针。 |
137
138### OH_AI_ModelBuild()
139
140```
141OH_AI_API OH_AI_Status OH_AI_ModelBuild(OH_AI_ModelHandle model, const void *model_data, size_t data_size,OH_AI_ModelType model_type, const OH_AI_ContextHandle model_context)
142```
143
144**描述**
145
146从内存缓冲区加载并编译MindSpore模型。<br>注意,同一个[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)对象仅能传递给[OH_AI_ModelBuild](capi-model-h.md#oh_ai_modelbuild)或者[OH_AI_ModelBuildFromFile](capi-model-h.md#oh_ai_modelbuildfromfile)一次,如果多次调用该函数需要创建多个不同的[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)。
147
148**起始版本:** 9
149
150
151**参数:**
152
153| 参数项 | 描述                                                                            |
154| -- |-------------------------------------------------------------------------------|
155| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。                                                                       |
156| const void *model_data | 内存中已经加载的模型数据地址。                                                               |
157| size_t data_size | 模型数据的长度。                                                                      |
158| [OH_AI_ModelType](capi-types-h.md#oh_ai_modeltype) model_type | 模型文件类型,具体见[OH_AI_ModelType](capi-types-h.md#oh_ai_modeltype)。                 |
159| const [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md) model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)。 |
160
161**返回:**
162
163| 类型 | 说明                                                                                                 |
164| -- |----------------------------------------------------------------------------------------------------|
165| OH_AI_API [OH_AI_Status](capi-status-h.md#oh_ai_status) | 枚举类型的状态码[OH_AI_Status](capi-status-h.md#oh_ai_status),若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。 |
166
167### OH_AI_ModelBuildFromFile()
168
169```
170OH_AI_API OH_AI_Status OH_AI_ModelBuildFromFile(OH_AI_ModelHandle model, const char *model_path,OH_AI_ModelType model_type, const OH_AI_ContextHandle model_context)
171```
172
173**描述**
174
175通过模型文件加载并编译MindSpore模型。<br>注意,同一个[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)对象仅能传递给[OH_AI_ModelBuild](capi-model-h.md#oh_ai_modelbuild)或者[OH_AI_ModelBuildFromFile](capi-model-h.md#oh_ai_modelbuildfromfile)一次,如果多次调用该函数需要创建多个不同的[OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)。
176
177**起始版本:** 9
178
179
180**参数:**
181
182| 参数项 | 描述 |
183| -- | -- |
184| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。 |
185| const char *model_path | 模型文件路径。字符串长度限制跟随文件系统。 |
186| [OH_AI_ModelType](capi-types-h.md#oh_ai_modeltype) model_type | 模型文件类型,具体见[OH_AI_ModelType](capi-types-h.md#oh_ai_modeltype)。 |
187| const [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md) model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)。 |
188
189**返回:**
190
191| 类型 | 说明 |
192| -- | -- |
193| OH_AI_API [OH_AI_Status](capi-status-h.md#oh_ai_status) | 枚举类型的状态码[OH_AI_Status](capi-status-h.md#oh_ai_status),若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。 |
194
195### OH_AI_ModelResize()
196
197```
198OH_AI_API OH_AI_Status OH_AI_ModelResize(OH_AI_ModelHandle model, const OH_AI_TensorHandleArray inputs,OH_AI_ShapeInfo *shape_infos, size_t shape_info_num)
199```
200
201**描述**
202
203调整已编译模型的输入形状。
204
205**起始版本:** 9
206
207
208**参数:**
209
210| 参数项 | 描述 |
211| -- | -- |
212| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。 |
213| [const OH_AI_TensorHandleArray](capi-mindspore-oh-ai-tensorhandlearray.md) inputs | 模型输入对应的张量数组结构体。 |
214| [OH_AI_ShapeInfo](capi-mindspore-oh-ai-shapeinfo.md) *shape_infos | 输入形状信息数组,按模型输入顺序排列的由形状信息组成的数组,模型会按顺序依次调整张量形状。 |
215| size_t shape_info_num | 形状信息数组的长度。 |
216
217**返回:**
218
219| 类型 | 说明 |
220| -- | -- |
221| OH_AI_API [OH_AI_Status](capi-status-h.md#oh_ai_status) | 枚举类型的状态码[OH_AI_Status](capi-status-h.md#oh_ai_status),若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。 |
222
223### OH_AI_ModelPredict()
224
225```
226OH_AI_API OH_AI_Status OH_AI_ModelPredict(OH_AI_ModelHandle model, const OH_AI_TensorHandleArray inputs,OH_AI_TensorHandleArray *outputs, const OH_AI_KernelCallBack before,const OH_AI_KernelCallBack after)
227```
228
229**描述**
230
231执行模型推理。
232
233**起始版本:** 9
234
235
236**参数:**
237
238| 参数项 | 描述 |
239| -- | -- |
240| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。 |
241| [const OH_AI_TensorHandleArray](capi-mindspore-oh-ai-tensorhandlearray.md) inputs | 模型输入对应的张量数组结构体。 |
242| [OH_AI_TensorHandleArray](capi-mindspore-oh-ai-tensorhandlearray.md) *outputs | 模型输出对应的张量数组结构体的指针。 |
243| [const OH_AI_KernelCallBack](capi-model-h.md#oh_ai_kernelcallback) before | 模型推理前执行的回调函数。 |
244| [const OH_AI_KernelCallBack](capi-model-h.md#oh_ai_kernelcallback) after | 模型推理后执行的回调函数。 |
245
246**返回:**
247
248| 类型 | 说明 |
249| -- | -- |
250| OH_AI_API [OH_AI_Status](capi-status-h.md#oh_ai_status) | 枚举类型的状态码[OH_AI_Status](capi-status-h.md#oh_ai_status),若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。 |
251
252### OH_AI_ModelGetInputs()
253
254```
255OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetInputs(const OH_AI_ModelHandle model)
256```
257
258**描述**
259
260获取模型的输入张量数组结构体。
261
262**起始版本:** 9
263
264
265**参数:**
266
267| 参数项 | 描述 |
268| -- | -- |
269| const [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。 |
270
271**返回:**
272
273| 类型                                    | 说明 |
274|---------------------------------------| -- |
275| OH_AI_API [OH_AI_TensorHandleArray](capi-mindspore-oh-ai-tensorhandlearray.md) | 模型输入对应的张量数组结构体。 |
276
277### OH_AI_ModelGetOutputs()
278
279```
280OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetOutputs(const OH_AI_ModelHandle model)
281```
282
283**描述**
284
285获取模型的输出张量数组结构体。
286
287**起始版本:** 9
288
289
290**参数:**
291
292| 参数项 | 描述 |
293| -- | -- |
294| const [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。 |
295
296**返回:**
297
298| 类型 | 说明 |
299| -- | -- |
300| OH_AI_API [OH_AI_TensorHandleArray](capi-mindspore-oh-ai-tensorhandlearray.md) | 模型输出对应的张量数组结构体。 |
301
302### OH_AI_ModelGetInputByTensorName()
303
304```
305OH_AI_API OH_AI_TensorHandle OH_AI_ModelGetInputByTensorName(const OH_AI_ModelHandle model, const char *tensor_name)
306```
307
308**描述**
309
310通过张量名获取模型的输入张量。
311
312**起始版本:** 9
313
314
315**参数:**
316
317| 参数项 | 描述 |
318| -- | -- |
319| const [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。 |
320| const char *tensor_name | 张量名称。字符串长度跟随系统限制。 |
321
322**返回:**
323
324| 类型                               | 说明 |
325|----------------------------------| -- |
326| OH_AI_API [OH_AI_TensorHandle](capi-mindspore-oh-ai-tensorHandle.md) | tensor_name所对应的输入张量的张量指针,如果输入中没有该张量则返回空。 |
327
328### OH_AI_ModelGetOutputByTensorName()
329
330```
331OH_AI_API OH_AI_TensorHandle OH_AI_ModelGetOutputByTensorName(const OH_AI_ModelHandle model, const char *tensor_name)
332```
333
334**描述**
335
336通过张量名获取模型的输出张量。
337
338**起始版本:** 9
339
340
341**参数:**
342
343| 参数项 | 描述 |
344| -- | -- |
345| const [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。 |
346| const char *tensor_name | 张量名称。字符串长度跟随系统限制。 |
347
348**返回:**
349
350| 类型 | 说明 |
351| -- | -- |
352| OH_AI_API [OH_AI_TensorHandle](capi-mindspore-oh-ai-tensorHandle.md) | tensor_name所对应的输入张量的张量指针,如果输出中没有该张量则返回空。 |
353
354### OH_AI_TrainCfgCreate()
355
356```
357OH_AI_API OH_AI_TrainCfgHandle OH_AI_TrainCfgCreate()
358```
359
360**描述**
361
362创建训练配置对象指针,仅用于端侧训练。
363
364**起始版本:** 11
365
366**返回:**
367
368| 类型                                 | 说明 |
369|------------------------------------| -- |
370| OH_AI_API [OH_AI_TrainCfgHandle](capi-mindspore-oh-ai-traincfghandle.md) | 训练配置对象指针。 |
371
372### OH_AI_TrainCfgDestroy()
373
374```
375OH_AI_API void OH_AI_TrainCfgDestroy(OH_AI_TrainCfgHandle *train_cfg)
376```
377
378**描述**
379
380销毁训练配置对象指针,仅用于端侧训练。
381
382**起始版本:** 11
383
384
385**参数:**
386
387| 参数项                                 | 描述 |
388|-------------------------------------| -- |
389| [OH_AI_TrainCfgHandle](capi-mindspore-oh-ai-traincfghandle.md) *train_cfg | 训练配置对象指针。 |
390
391### OH_AI_TrainCfgGetLossName()
392
393```
394OH_AI_API char **OH_AI_TrainCfgGetLossName(OH_AI_TrainCfgHandle train_cfg, size_t *num)
395```
396
397**描述**
398
399获取损失函数的名称列表,仅用于端侧训练。
400
401**起始版本:** 11
402
403
404**参数:**
405
406| 参数项 | 描述 |
407| -- | -- |
408| [OH_AI_TrainCfgHandle](capi-mindspore-oh-ai-traincfghandle.md) train_cfg | 训练配置对象指针。 |
409| size_t *num | 损失函数数量。 |
410
411**返回:**
412
413| 类型 | 说明 |
414| -- | -- |
415| OH_AI_API char ** | 损失函数的名称列表。 |
416
417### OH_AI_TrainCfgSetLossName()
418
419```
420OH_AI_API void OH_AI_TrainCfgSetLossName(OH_AI_TrainCfgHandle train_cfg, const char **loss_name, size_t num)
421```
422
423**描述**
424
425设置损失函数的名称列表,仅用于端侧训练。
426
427**起始版本:** 11
428
429
430**参数:**
431
432| 参数项 | 描述 |
433| -- | -- |
434| [OH_AI_TrainCfgHandle](capi-mindspore-oh-ai-traincfghandle.md) train_cfg | 训练配置对象指针。 |
435| const char **loss_name | 损失函数的名称列表。 |
436| size_t num | 损失函数数量。 |
437
438### OH_AI_TrainCfgGetOptimizationLevel()
439
440```
441OH_AI_API OH_AI_OptimizationLevel OH_AI_TrainCfgGetOptimizationLevel(OH_AI_TrainCfgHandle train_cfg)
442```
443
444**描述**
445
446获取训练配置的优化等级,仅用于端侧训练。
447
448**起始版本:** 11
449
450
451**参数:**
452
453| 参数项 | 描述 |
454| -- | -- |
455| [OH_AI_TrainCfgHandle](capi-mindspore-oh-ai-traincfghandle.md) train_cfg | 训练配置对象指针。 |
456
457**返回:**
458
459| 类型                                                                           | 说明 |
460|------------------------------------------------------------------------------| -- |
461| OH_AI_API [OH_AI_OptimizationLevel](capi-types-h.md#oh_ai_optimizationlevel) | 优化等级。 |
462
463### OH_AI_TrainCfgSetOptimizationLevel()
464
465```
466OH_AI_API void OH_AI_TrainCfgSetOptimizationLevel(OH_AI_TrainCfgHandle train_cfg, OH_AI_OptimizationLevel level)
467```
468
469**描述**
470
471设置训练配置的优化等级,仅用于端侧训练。
472
473**起始版本:** 11
474
475
476**参数:**
477
478| 参数项 | 描述 |
479| -- | -- |
480| [OH_AI_TrainCfgHandle](capi-mindspore-oh-ai-traincfghandle.md) train_cfg | 训练配置对象指针。 |
481| [OH_AI_OptimizationLevel](capi-types-h.md#oh_ai_optimizationlevel) level | 优化等级。 |
482
483### OH_AI_TrainModelBuild()
484
485```
486OH_AI_API OH_AI_Status OH_AI_TrainModelBuild(OH_AI_ModelHandle model, const void *model_data, size_t data_size,OH_AI_ModelType model_type, const OH_AI_ContextHandle model_context,const OH_AI_TrainCfgHandle train_cfg)
487```
488
489**描述**
490
491从内存缓冲区加载训练模型,并将模型编译至可在Device上运行的状态,仅用于端侧训练。
492
493**起始版本:** 11
494
495
496**参数:**
497
498| 参数项 | 描述 |
499| -- | -- |
500| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。 |
501| const void *model_data | 指向存储读入模型文件缓冲区的指针。 |
502| size_t data_size | 缓冲区大小。 |
503| [OH_AI_ModelType](capi-types-h.md#oh_ai_modeltype) model_type | 模型文件类型,具体见[OH_AI_ModelType](capi-types-h.md#oh_ai_modeltype)。 |
504| const [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md) model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)。 |
505| const [OH_AI_TrainCfgHandle](capi-mindspore-oh-ai-traincfghandle.md) train_cfg | 训练配置对象指针。 |
506
507**返回:**
508
509| 类型 | 说明 |
510| -- | -- |
511| OH_AI_API [OH_AI_Status](capi-status-h.md#oh_ai_status) | 枚举类型的状态码[OH_AI_Status](capi-status-h.md#oh_ai_status),若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。 |
512
513### OH_AI_TrainModelBuildFromFile()
514
515```
516OH_AI_API OH_AI_Status OH_AI_TrainModelBuildFromFile(OH_AI_ModelHandle model, const char *model_path,OH_AI_ModelType model_type,const OH_AI_ContextHandle model_context,const OH_AI_TrainCfgHandle train_cfg)
517```
518
519**描述**
520
521根据路径读取加载训练模型,并将模型编译至可在Device上运行的状态,仅用于端侧训练。
522
523**起始版本:** 11
524
525
526**参数:**
527
528| 参数项 | 描述 |
529| -- | -- |
530| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。 |
531| const char *model_path | 模型文件路径。字符串长度限制跟随文件系统。 |
532| [OH_AI_ModelType](capi-types-h.md#oh_ai_modeltype) model_type | 模型文件类型,具体见[OH_AI_ModelType](capi-types-h.md#oh_ai_modeltype)。 |
533| const [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md) model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](capi-mindspore-oh-ai-contexthandle.md)。 |
534| const [OH_AI_TrainCfgHandle](capi-mindspore-oh-ai-traincfghandle.md) train_cfg | 训练配置对象指针。 |
535
536**返回:**
537
538| 类型 | 说明 |
539| -- | -- |
540| OH_AI_API [OH_AI_Status](capi-status-h.md#oh_ai_status) | 枚举类型的状态码[OH_AI_Status](capi-status-h.md#oh_ai_status),若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。 |
541
542### OH_AI_RunStep()
543
544```
545OH_AI_API OH_AI_Status OH_AI_RunStep(OH_AI_ModelHandle model, const OH_AI_KernelCallBack before,const OH_AI_KernelCallBack after)
546```
547
548**描述**
549
550单步训练模型,仅用于端侧训练。
551
552**起始版本:** 11
553
554
555**参数:**
556
557| 参数项 | 描述 |
558| -- | -- |
559| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。 |
560| [const OH_AI_KernelCallBack](capi-model-h.md#oh_ai_kernelcallback) before | 模型推理前执行的回调函数。 |
561| [const OH_AI_KernelCallBack](capi-model-h.md#oh_ai_kernelcallback) after | 模型推理后执行的回调函数。 |
562
563**返回:**
564
565| 类型 | 说明 |
566| -- | -- |
567| OH_AI_API [OH_AI_Status](capi-status-h.md#oh_ai_status) | 枚举类型的状态码[OH_AI_Status](capi-status-h.md#oh_ai_status),若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。 |
568
569### OH_AI_ModelSetLearningRate()
570
571```
572OH_AI_API OH_AI_Status OH_AI_ModelSetLearningRate(OH_AI_ModelHandle model, float learning_rate)
573```
574
575**描述**
576
577设置训练的学习率,仅用于端侧训练。
578
579**起始版本:** 11
580
581
582**参数:**
583
584| 参数项 | 描述 |
585| -- | -- |
586| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。 |
587| float learning_rate | 学习率。 |
588
589**返回:**
590
591| 类型 | 说明 |
592| -- | -- |
593| OH_AI_API [OH_AI_Status](capi-status-h.md#oh_ai_status) | 枚举类型的状态码[OH_AI_Status](capi-status-h.md#oh_ai_status),若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。 |
594
595### OH_AI_ModelGetLearningRate()
596
597```
598OH_AI_API float OH_AI_ModelGetLearningRate(OH_AI_ModelHandle model)
599```
600
601**描述**
602
603获取训练的学习率,仅用于端侧训练。
604
605**起始版本:** 11
606
607
608**参数:**
609
610| 参数项 | 描述 |
611| -- | -- |
612| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。 |
613
614**返回:**
615
616| 类型 | 说明 |
617| -- | -- |
618| OH_AI_API float | 学习率,没有设置优化器时为0.0。 |
619
620### OH_AI_ModelGetWeights()
621
622```
623OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetWeights(OH_AI_ModelHandle model)
624```
625
626**描述**
627
628获取模型的所有权重Tensors,仅用于端侧训练。
629
630**起始版本:** 11
631
632
633**参数:**
634
635| 参数项 | 描述 |
636| -- | -- |
637| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。 |
638
639**返回:**
640
641| 类型 | 说明 |
642| -- | -- |
643| OH_AI_API [OH_AI_TensorHandleArray](capi-mindspore-oh-ai-tensorhandlearray.md) | 模型的所有权重Tensor。 |
644
645### OH_AI_ModelUpdateWeights()
646
647```
648OH_AI_API OH_AI_Status OH_AI_ModelUpdateWeights(OH_AI_ModelHandle model, const OH_AI_TensorHandleArray new_weights)
649```
650
651**描述**
652
653更新模型的权重Tensor内容,仅用于端侧训练。
654
655**起始版本:** 11
656
657
658**参数:**
659
660| 参数项 | 描述 |
661| -- | -- |
662| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。 |
663| [const OH_AI_TensorHandleArray](capi-mindspore-oh-ai-tensorhandlearray.md) new_weights | 要更新的权重Tensor。 |
664
665**返回:**
666
667| 类型 | 说明 |
668| -- | -- |
669| OH_AI_API [OH_AI_Status](capi-status-h.md#oh_ai_status) | 枚举类型的状态码[OH_AI_Status](capi-status-h.md#oh_ai_status),若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。 |
670
671### OH_AI_ModelGetTrainMode()
672
673```
674OH_AI_API bool OH_AI_ModelGetTrainMode(OH_AI_ModelHandle model)
675```
676
677**描述**
678
679获取训练模式。
680
681**起始版本:** 11
682
683
684**参数:**
685
686| 参数项 | 描述 |
687| -- | -- |
688| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。 |
689
690**返回:**
691
692| 类型 | 说明 |
693| -- | -- |
694| OH_AI_API bool | 表示是否是训练模式。true表示是训练模式,false表示不是训练模式。 |
695
696### OH_AI_ModelSetTrainMode()
697
698```
699OH_AI_API OH_AI_Status OH_AI_ModelSetTrainMode(OH_AI_ModelHandle model, bool train)
700```
701
702**描述**
703
704设置训练模式,仅用于端侧训练。
705
706**起始版本:** 11
707
708
709**参数:**
710
711| 参数项 | 描述 |
712| -- | -- |
713| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。 |
714| bool train | 是否为训练模式。true表示是训练模式,false表示不是训练模式。 |
715
716**返回:**
717
718| 类型 | 说明 |
719| -- | -- |
720| OH_AI_API [OH_AI_Status](capi-status-h.md#oh_ai_status) | 枚举类型的状态码[OH_AI_Status](capi-status-h.md#oh_ai_status),若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。 |
721
722### OH_AI_ModelSetupVirtualBatch()
723
724```
725OH_AI_API OH_AI_Status OH_AI_ModelSetupVirtualBatch(OH_AI_ModelHandle model, int virtual_batch_multiplier, float lr,float momentum)
726```
727
728**描述**
729
730设置虚拟batch用于训练,仅用于端侧训练。
731
732**起始版本:** 11
733
734
735**参数:**
736
737| 参数项 | 描述 |
738| -- | -- |
739| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。 |
740| int virtual_batch_multiplier | 虚拟batch乘法器,当设置值小于1时,表示禁用虚拟batch。长度跟随系统限制。 |
741| float lr | 学习率,默认为-1.0f。 |
742| float momentum | 动量,默认为-1.0f。 |
743
744**返回:**
745
746| 类型 | 说明 |
747| -- | -- |
748| OH_AI_API [OH_AI_Status](capi-status-h.md#oh_ai_status) | 枚举类型的状态码[OH_AI_Status](capi-status-h.md#oh_ai_status),若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。 |
749
750### OH_AI_ExportModel()
751
752```
753OH_AI_API OH_AI_Status OH_AI_ExportModel(OH_AI_ModelHandle model, OH_AI_ModelType model_type, const char *model_file,OH_AI_QuantizationType quantization_type, bool export_inference_only,char **output_tensor_name, size_t num)
754```
755
756**描述**
757
758导出训练模型,仅用于端侧训练。
759
760**起始版本:** 11
761
762
763**参数:**
764
765| 参数项                                                                                | 描述 |
766|------------------------------------------------------------------------------------| -- |
767| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model                     | 模型对象指针。 |
768| [OH_AI_ModelType](capi-types-h.md#oh_ai_modeltype) model_type                      | 模型文件类型,具体见[OH_AI_ModelType](capi-types-h.md#oh_ai_modeltype)。 |
769| const char *model_file                                                             | 导出的模型文件路径。字符串长度限制跟随文件系统。 |
770| [OH_AI_QuantizationType](capi-types-h.md#oh_ai_quantizationtype) quantization_type | 量化类型。 |
771| bool export_inference_only                                                         | 是否导出推理模型。true表示导出推理模型,false表示不导出推理模型。 |
772| char **output_tensor_name                                                          | 设置导出模型的输出Tensor,默认为空表示全量导出。 |
773| size_t num                                                                         | 输出Tensor的数量。 |
774
775**返回:**
776
777| 类型 | 说明 |
778| -- | -- |
779| OH_AI_API [OH_AI_Status](capi-status-h.md#oh_ai_status) | 枚举类型的状态码[OH_AI_Status](capi-status-h.md#oh_ai_status),若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。 |
780
781### OH_AI_ExportModelBuffer()
782
783```
784OH_AI_API OH_AI_Status OH_AI_ExportModelBuffer(OH_AI_ModelHandle model, OH_AI_ModelType model_type, void *model_data,size_t *data_size, OH_AI_QuantizationType quantization_type,bool export_inference_only, char **output_tensor_name, size_t num)
785```
786
787**描述**
788
789导出训练模型内存缓存,仅用于端侧训练。
790
791**起始版本:** 11
792
793
794**参数:**
795
796| 参数项 | 描述 |
797| -- | -- |
798| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。 |
799| [OH_AI_ModelType](capi-types-h.md#oh_ai_modeltype) model_type | 模型文件类型,具体见[OH_AI_ModelType](capi-types-h.md#oh_ai_modeltype)。 |
800| void *model_data | 指向导出模型文件缓冲区的指针。 |
801| size_t *data_size | 缓冲区大小。 |
802| [OH_AI_QuantizationType](capi-types-h.md#oh_ai_quantizationtype) quantization_type | 量化类型。 |
803| bool export_inference_only | 是否导出推理模型。true表示导出推理模型,false表示不导出推理模型。 |
804| char **output_tensor_name | 设置导出模型的输出Tensor,默认为空表示全量导出。 |
805| size_t num | 输出Tensor的数量。 |
806
807**返回:**
808
809| 类型 | 说明 |
810| -- | -- |
811| OH_AI_API [OH_AI_Status](capi-status-h.md#oh_ai_status) | 枚举类型的状态码[OH_AI_Status](capi-status-h.md#oh_ai_status),若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。 |
812
813### OH_AI_ExportWeightsCollaborateWithMicro()
814
815```
816OH_AI_API OH_AI_Status OH_AI_ExportWeightsCollaborateWithMicro(OH_AI_ModelHandle model, OH_AI_ModelType model_type,const char *weight_file, bool is_inference,bool enable_fp16, char **changeable_weights_name,size_t num)
817```
818
819**描述**
820
821导出模型权重,只能用于micro推理,仅用于端侧训练。
822
823**起始版本:** 11
824
825
826**参数:**
827
828| 参数项 | 描述 |
829| -- | -- |
830| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。 |
831| [OH_AI_ModelType](capi-types-h.md#oh_ai_modeltype) model_type | 模型文件类型,具体见[OH_AI_ModelType](capi-types-h.md#oh_ai_modeltype)。 |
832| const char *weight_file | 导出的权重文件路径。字符串长度限制跟随文件系统。 |
833| bool is_inference | 是否导出推理模型,当前只支持设置为true。 |
834| bool enable_fp16 | 浮点权重是否保存为float16格式。true表示保存为float16格式,false表示不保存为float16格式。 |
835| char **changeable_weights_name | shape可变的权重Tensor名称。 |
836| size_t num | shape可变的权重Tensor名称的数量。 |
837
838**返回:**
839
840| 类型 | 说明 |
841| -- | -- |
842| OH_AI_API [OH_AI_Status](capi-status-h.md#oh_ai_status) | 枚举类型的状态码[OH_AI_Status](capi-status-h.md#oh_ai_status),若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。 |
843
844### OH_AI_ModelLoadConfig()
845
846```
847OH_AI_API OH_AI_Status OH_AI_ModelLoadConfig(OH_AI_ModelHandle model, const char *config_path);
848```
849
850**描述**
851
852加载模型配置文件。
853
854**起始版本:** 20
855
856**参数:**
857
858| 参数项                                                       | 描述                                       |
859| ------------------------------------------------------------ | ------------------------------------------ |
860| [OH_AI_ModelHandle](capi-mindspore-oh-ai-modelhandle.md) model | 模型对象指针。                             |
861| const char *config_path                                      | 配置文件路径。字符串长度限制跟随文件系统。 |
862
863**返回:**
864
865| 类型                                                    | 说明                                                         |
866| ------------------------------------------------------- | ------------------------------------------------------------ |
867| OH_AI_API [OH_AI_Status](capi-status-h.md#oh_ai_status) | 枚举类型的状态码[OH_AI_Status](capi-status-h.md#oh_ai_status),若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。 |
868
869