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