1# MindSpore 2 3 4## 概述 5 6提供MindSpore Lite的模型推理相关接口。 7 8**起始版本:** 9 9 10 11## 汇总 12 13 14### 文件 15 16| 名称 | 描述 | 17| -------- | -------- | 18| [context.h](context_8h.md) | 提供了Context相关的接口,可以配置运行时信息。<br/>引用文件:<mindspore/context.h><br/>库:libmindspore_lite_ndk.so | 19| [data_type.h](data__type_8h.md) | 声明了张量的数据的类型。<br/>引用文件:<mindspore/data_type.h><br/>库:libmindspore_lite_ndk.so | 20| [format.h](format_8h.md) | 提供张量数据的排列格式。<br/>引用文件:<mindspore/format.h><br/>库:libmindspore_lite_ndk.so | 21| [model.h](model_8h.md) | 提供了模型相关接口,可以用于模型创建、模型推理等。<br/>引用文件:<mindspore/model.h><br/>库:libmindspore_lite_ndk.so | 22| [status.h](status_8h.md) | 提供了Mindspore Lite运行时的状态码。<br/>引用文件:<mindspore/status.h><br/>库:libmindspore_lite_ndk.so | 23| [tensor.h](tensor_8h.md) | 提供了张量相关的接口,可用于创建和修改张量信息。<br/>引用文件:<mindspore/tensor.h><br/>库:libmindspore_lite_ndk.so | 24| [types.h](types_8h.md) | 提供了MindSpore Lite支持的模型文件类型和设备类型。<br/>引用文件:<mindspore/types.h><br/>库:libmindspore_lite_ndk.so | 25 26 27### 结构体 28 29| 名称 | 描述 | 30| -------- | -------- | 31| [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md) | 张量数组结构体,用于存储张量数组指针和张量数组长度 | 32| [OH_AI_ShapeInfo](_o_h___a_i___shape_info.md) | 维度信息,最大的维度为**MS_MAX_SHAPE_NUM**。 | 33| [OH_AI_CallBackParam](_o_h___a_i___call_back_param.md) | 回调函数中传入的算子信息。 | 34 35 36### 宏定义 37 38| 名称 | 描述 | 39| -------- | -------- | 40| [OH_AI_MAX_SHAPE_NUM](#oh_ai_max_shape_num) 32 | 张量维度的最大值。 | 41 42 43### 类型定义 44 45| 名称 | 描述 | 46| -------- | -------- | 47| [OH_AI_ContextHandle](#oh_ai_contexthandle) | Mindspore的上下文信息的指针,该指针会指向Context。 | 48| [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) | Mindspore的运行设备信息的指针。 | 49| [OH_AI_DataType](#oh_ai_datatype) | MSTensor保存的数据支持的类型。 | 50| [OH_AI_Format](#oh_ai_format) | MSTensor保存的数据支持的排列格式。 | 51| [OH_AI_ModelHandle](#oh_ai_modelhandle) | 指向模型对象的指针。 | 52| [OH_AI_TrainCfgHandle](#oh_ai_traincfghandle) | 指向训练配置对象的指针。 | 53| [OH_AI_TensorHandleArray](#oh_ai_tensorhandlearray) | 张量数组结构体,用于存储张量数组指针和张量数组长度 | 54| [OH_AI_ShapeInfo](_o_h___a_i___shape_info.md) | 维度信息,最大的维度为**MS_MAX_SHAPE_NUM**。 | 55| [OH_AI_CallBackParam](#oh_ai_callbackparam) | 回调函数中传入的算子信息。 | 56| [OH_AI_KernelCallBack](#oh_ai_kernelcallback)) (const [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md) inputs, const [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md) outputs, const [OH_AI_CallBackParam](_o_h___a_i___call_back_param.md) kernel_Info) | 回调函数指针。 | 57| [OH_AI_Status](#oh_ai_status) | Minspore的状态码 | 58| [OH_AI_TensorHandle](#oh_ai_tensorhandle) | 指向张量对象句柄 | 59| [OH_AI_ModelType](#oh_ai_modeltype) | 模型文件的类型 | 60| [OH_AI_DeviceType](#oh_ai_devicetype) | 设备类型信息,包含了目前支持的设备类型。 | 61| [OH_AI_NNRTDeviceType](#oh_ai_nnrtdevicetype) | NNRT管理的硬件设备类型 | 62| [OH_AI_PerformanceMode](#oh_ai_performancemode) | NNRT硬件的工作性能模式 | 63| [OH_AI_Priority](#oh_ai_priority) | NNRT推理任务优先级 | 64| [OH_AI_OptimizationLevel](#oh_ai_optimizationlevel) | 训练优化等级。 | 65| [OH_AI_QuantizationType](#oh_ai_quantizationtype) | 量化类型信息。 | 66| [NNRTDeviceDesc](#nnrtdevicedesc) | NNRT设备信息描述,包含设备ID,设备名称等信息。 | 67 68 69### 枚举 70 71| 名称 | 描述 | 72| -------- | -------- | 73| [OH_AI_DataType](#oh_ai_datatype) {<br/>OH_AI_DATATYPE_UNKNOWN = 0, OH_AI_DATATYPE_OBJECTTYPE_STRING = 12, OH_AI_DATATYPE_OBJECTTYPE_LIST = 13, OH_AI_DATATYPE_OBJECTTYPE_TUPLE = 14,<br/>OH_AI_DATATYPE_OBJECTTYPE_TENSOR = 17, OH_AI_DATATYPE_NUMBERTYPE_BEGIN = 29, OH_AI_DATATYPE_NUMBERTYPE_BOOL = 30, OH_AI_DATATYPE_NUMBERTYPE_INT8 = 32,<br/>OH_AI_DATATYPE_NUMBERTYPE_INT16 = 33, OH_AI_DATATYPE_NUMBERTYPE_INT32 = 34, OH_AI_DATATYPE_NUMBERTYPE_INT64 = 35, OH_AI_DATATYPE_NUMBERTYPE_UINT8 = 37,<br/>OH_AI_DATATYPE_NUMBERTYPE_UINT16 = 38, OH_AI_DATATYPE_NUMBERTYPE_UINT32 = 39, OH_AI_DATATYPE_NUMBERTYPE_UINT64 = 40, OH_AI_DATATYPE_NUMBERTYPE_FLOAT16 = 42,<br/>OH_AI_DATATYPE_NUMBERTYPE_FLOAT32 = 43, OH_AI_DATATYPE_NUMBERTYPE_FLOAT64 = 44, OH_AI_DATATYPE_NUMBERTYPE_END = 46, OH_AI_DataTypeInvalid = INT32_MAX<br/>} | MSTensor保存的数据支持的类型。 | 74| [OH_AI_Format](#oh_ai_format) {<br/>OH_AI_FORMAT_NCHW = 0, OH_AI_FORMAT_NHWC = 1, OH_AI_FORMAT_NHWC4 = 2, OH_AI_FORMAT_HWKC = 3,<br/>OH_AI_FORMAT_HWCK = 4, OH_AI_FORMAT_KCHW = 5, OH_AI_FORMAT_CKHW = 6, OH_AI_FORMAT_KHWC = 7,<br/>OH_AI_FORMAT_CHWK = 8, OH_AI_FORMAT_HW = 9, OH_AI_FORMAT_HW4 = 10, OH_AI_FORMAT_NC = 11,<br/>OH_AI_FORMAT_NC4 = 12, OH_AI_FORMAT_NC4HW4 = 13, OH_AI_FORMAT_NCDHW = 15, OH_AI_FORMAT_NWC = 16,<br/>OH_AI_FORMAT_NCW = 17<br/>} | MSTensor保存的数据支持的排列格式。 | 75| [OH_AI_CompCode](#oh_ai_compcode) { <br/>OH_AI_COMPCODE_CORE = 0x00000000u, <br/>OH_AI_COMPCODE_MD = 0x10000000u, <br/>OH_AI_COMPCODE_ME = 0x20000000u, <br/>OH_AI_COMPCODE_MC = 0x30000000u, <br/>OH_AI_COMPCODE_LITE = 0xF0000000u<br/> } | MindSpore不同组件的代码。 76| [OH_AI_Status](#oh_ai_status) {<br/>OH_AI_STATUS_SUCCESS = 0, OH_AI_STATUS_CORE_FAILED = OH_AI_COMPCODE_CORE \| 0x1, OH_AI_STATUS_LITE_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -1), OH_AI_STATUS_LITE_NULLPTR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -2),<br/>OH_AI_STATUS_LITE_PARAM_INVALID = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -3), OH_AI_STATUS_LITE_NO_CHANGE = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -4), OH_AI_STATUS_LITE_SUCCESS_EXIT = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -5), OH_AI_STATUS_LITE_MEMORY_FAILED = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -6),<br/>OH_AI_STATUS_LITE_NOT_SUPPORT = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -7), OH_AI_STATUS_LITE_THREADPOOL_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -8), OH_AI_STATUS_LITE_UNINITIALIZED_OBJ = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -9), OH_AI_STATUS_LITE_OUT_OF_TENSOR_RANGE = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -100),<br/>OH_AI_STATUS_LITE_INPUT_TENSOR_ERROR, OH_AI_STATUS_LITE_REENTRANT_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -102), OH_AI_STATUS_LITE_GRAPH_FILE_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -200), OH_AI_STATUS_LITE_NOT_FIND_OP = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -300),<br/>OH_AI_STATUS_LITE_INVALID_OP_NAME = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -301), OH_AI_STATUS_LITE_INVALID_OP_ATTR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -302), OH_AI_STATUS_LITE_OP_EXECUTE_FAILURE, OH_AI_STATUS_LITE_FORMAT_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -400),<br/>OH_AI_STATUS_LITE_INFER_ERROR = OH_AI_COMPCODE_LITE \| (0x0FFFFFFF & -500), OH_AI_STATUS_LITE_INFER_INVALID, OH_AI_STATUS_LITE_INPUT_PARAM_INVALID<br/>} | Minspore的状态码 | 77| [OH_AI_ModelType](#oh_ai_modeltype) { OH_AI_MODELTYPE_MINDIR = 0, OH_AI_MODELTYPE_INVALID = 0xFFFFFFFF } | 模型文件的类型 | 78| [OH_AI_DeviceType](#oh_ai_devicetype) {<br/>OH_AI_DEVICETYPE_CPU = 0, OH_AI_DEVICETYPE_GPU, OH_AI_DEVICETYPE_KIRIN_NPU, OH_AI_DEVICETYPE_NNRT = 60,<br/>OH_AI_DEVICETYPE_INVALID = 100<br/>} | 设备类型信息,包含了目前支持的设备类型。 | 79| [OH_AI_NNRTDeviceType](#oh_ai_nnrtdevicetype) { OH_AI_NNRTDEVICE_OTHERS = 0, OH_AI_NNRTDEVICE_CPU = 1, OH_AI_NNRTDEVICE_GPU = 2, OH_AI_NNRTDEVICE_ACCELERATOR = 3 } | NNRT管理的硬件设备类型 | 80| [OH_AI_PerformanceMode](#oh_ai_performancemode) {<br/>OH_AI_PERFORMANCE_NONE = 0, OH_AI_PERFORMANCE_LOW = 1, OH_AI_PERFORMANCE_MEDIUM = 2, OH_AI_PERFORMANCE_HIGH = 3,<br/>OH_AI_PERFORMANCE_EXTREME = 4<br/>} | NNRT硬件的工作性能模式 | 81| [OH_AI_Priority](#oh_ai_priority) { OH_AI_PRIORITY_NONE = 0, OH_AI_PRIORITY_LOW = 1, OH_AI_PRIORITY_MEDIUM = 2, OH_AI_PRIORITY_HIGH = 3 } | NNRT推理任务优先级 | 82| [OH_AI_OptimizationLevel](#oh_ai_optimizationlevel) {<br/>OH_AI_KO0 = 0, OH_AI_KO2 = 2, OH_AI_KO3 = 3, OH_AI_KAUTO = 4,<br/>OH_AI_KOPTIMIZATIONTYPE = 0xFFFFFFFF<br/>} | 训练优化等级。 | 83| [OH_AI_QuantizationType](#oh_ai_quantizationtype) { OH_AI_NO_QUANT = 0, OH_AI_WEIGHT_QUANT = 1, OH_AI_FULL_QUANT = 2, OH_AI_UNKNOWN_QUANT_TYPE = 0xFFFFFFFF } | 量化类型信息。 | 84 85 86### 函数 87 88| 名称 | 描述 | 89| -------- | -------- | 90| [OH_AI_ContextCreate](#oh_ai_contextcreate) () | 创建一个上下文的对象。 | 91| [OH_AI_ContextDestroy](#oh_ai_contextdestroy) ([OH_AI_ContextHandle](#oh_ai_contexthandle) \*context) | 释放上下文对象。 | 92| [OH_AI_ContextSetThreadNum](#oh_ai_contextsetthreadnum) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, int32_t thread_num) | 设置运行时的线程数量。 | 93| [OH_AI_ContextGetThreadNum](#oh_ai_contextgetthreadnum) (const [OH_AI_ContextHandle](#oh_ai_contexthandle) context) | 获取线程数量。 | 94| [OH_AI_ContextSetThreadAffinityMode](#oh_ai_contextsetthreadaffinitymode) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, int mode) | 设置运行时线程绑定CPU核心的策略,按照CPU物理核频率分为大、中、小三种类型的核心,并且仅需绑大核或者绑中核,不需要绑小核。 | 95| [OH_AI_ContextGetThreadAffinityMode](#oh_ai_contextgetthreadaffinitymode) (const [OH_AI_ContextHandle](#oh_ai_contexthandle) context) | 获取运行时线程绑定CPU核心的策略。 | 96| [OH_AI_ContextSetThreadAffinityCoreList](#oh_ai_contextsetthreadaffinitycorelist) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, const int32_t \*core_list, size_t core_num) | 设置运行时线程绑定CPU核心的列表。 | 97| [OH_AI_ContextGetThreadAffinityCoreList](#oh_ai_contextgetthreadaffinitycorelist) (const [OH_AI_ContextHandle](#oh_ai_contexthandle) context, size_t \*core_num) | 获取CPU绑核列表。 | 98| [OH_AI_ContextSetEnableParallel](#oh_ai_contextsetenableparallel) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, bool is_parallel) | 设置运行时是否支持并行。此接口特性当前未开启,设置无效。 | 99| [OH_AI_ContextGetEnableParallel](#oh_ai_contextgetenableparallel) (const [OH_AI_ContextHandle](#oh_ai_contexthandle) context) | 获取是否支持算子间并行。 | 100| [OH_AI_ContextAddDeviceInfo](#oh_ai_contextadddeviceinfo) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 将一个用户定义的运行设备信息附加到推理上下文中。 | 101| [OH_AI_DeviceInfoCreate](#oh_ai_deviceinfocreate) ([OH_AI_DeviceType](#oh_ai_devicetype) device_type) | 创建一个设备信息对象。 | 102| [OH_AI_DeviceInfoDestroy](#oh_ai_deviceinfodestroy) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) \*device_info) | 释放设备信息实例。注意:设备信息实例被添加到context后,无须调用者手动释放。 | 103| [OH_AI_DeviceInfoSetProvider](#oh_ai_deviceinfosetprovider) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, const char \*provider) | 设置生产商的名称。 | 104| [OH_AI_DeviceInfoGetProvider](#oh_ai_deviceinfogetprovider) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取生产商的名称。 | 105| [OH_AI_DeviceInfoSetProviderDevice](#oh_ai_deviceinfosetproviderdevice) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, const char \*device) | 设置生产商设备的名称。 | 106| [OH_AI_DeviceInfoGetProviderDevice](#oh_ai_deviceinfogetproviderdevice) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取生产商设备的名称。 | 107| [OH_AI_DeviceInfoGetDeviceType](#oh_ai_deviceinfogetdevicetype) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取设备的类型。 | 108| [OH_AI_DeviceInfoSetEnableFP16](#oh_ai_deviceinfosetenablefp16) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, bool is_fp16) | 设置是否开启float16推理模式,仅CPU/GPU设备可用。 | 109| [OH_AI_DeviceInfoGetEnableFP16](#oh_ai_deviceinfogetenablefp16) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取是否开启float16推理模式, 仅CPU/GPU设备可用。 | 110| [OH_AI_DeviceInfoSetFrequency](#oh_ai_deviceinfosetfrequency) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, int frequency) | 设置NPU的频率,仅NPU设备可用。 | 111| [OH_AI_DeviceInfoGetFrequency](#oh_ai_deviceinfogetfrequency) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取NPU的频率类型,仅NPU设备可用。 | 112| [OH_AI_GetAllNNRTDeviceDescs](#oh_ai_getallnnrtdevicedescs) (size_t \*num) | 获取系统中所有NNRT硬件设备的描述信息。 | 113| [OH_AI_GetElementOfNNRTDeviceDescs](#oh_ai_getelementofnnrtdevicedescs) ([NNRTDeviceDesc](#nnrtdevicedesc) \*descs, size_t index) | 获取NNRT设备描述信息数组中的元素指针。 | 114| [OH_AI_DestroyAllNNRTDeviceDescs](#oh_ai_destroyallnnrtdevicedescs) ([NNRTDeviceDesc](#nnrtdevicedesc) \*\*desc) | 销毁从[OH_AI_GetAllNNRTDeviceDescs](#oh_ai_getallnnrtdevicedescs)获取的NNRT描写信息实例数组。 | 115| [OH_AI_GetDeviceIdFromNNRTDeviceDesc](#oh_ai_getdeviceidfromnnrtdevicedesc) (const [NNRTDeviceDesc](#nnrtdevicedesc) \*desc) | 从特定的NNRT设备描述信息实例获取NNRT设备ID。注意,此ID只对NNRT有效。 | 116| [OH_AI_GetNameFromNNRTDeviceDesc](#oh_ai_getnamefromnnrtdevicedesc) (const [NNRTDeviceDesc](#nnrtdevicedesc) \*desc) | 从特定的NNRT设备描述信息实例获取NNRT设备名称。 | 117| [OH_AI_GetTypeFromNNRTDeviceDesc](#oh_ai_gettypefromnnrtdevicedesc) (const [NNRTDeviceDesc](#nnrtdevicedesc) \*desc) | 从特定的NNRT设备描述信息实例获取NNRT设备类型。 | 118| [OH_AI_CreateNNRTDeviceInfoByName](#oh_ai_creatennrtdeviceinfobyname) (const char \*name) | 查找指定名称的NNRT设备,根据找到的第一个设备信息,创建NNRT设备信息。 | 119| [OH_AI_CreateNNRTDeviceInfoByType](#oh_ai_creatennrtdeviceinfobytype) ([OH_AI_NNRTDeviceType](#oh_ai_nnrtdevicetype) type) | 查找指定类型的NNRT设备,根据找到的第一个设备信息,创建NNRT设备信息。 | 120| [OH_AI_DeviceInfoSetDeviceId](#oh_ai_deviceinfosetdeviceid) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, size_t device_id) | 设置NNRT设备ID,仅NNRT设备可用。 | 121| [OH_AI_DeviceInfoGetDeviceId](#oh_ai_deviceinfogetdeviceid) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取NNRT设备ID,仅NNRT设备可用。 | 122| [OH_AI_DeviceInfoSetPerformanceMode](#oh_ai_deviceinfosetperformancemode) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, [OH_AI_PerformanceMode](#oh_ai_performancemode) mode) | 设置NNRT性能模式,仅NNRT设备可用。 | 123| [OH_AI_DeviceInfoGetPerformanceMode](#oh_ai_deviceinfogetperformancemode) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取NNRT性能模式,仅NNRT设备可用。 | 124| [OH_AI_DeviceInfoSetPriority](#oh_ai_deviceinfosetpriority) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, [OH_AI_Priority](#oh_ai_priority) priority) | 设置NNRT任务优先级,仅NNRT设备可用。 | 125| [OH_AI_DeviceInfoGetPriority](#oh_ai_deviceinfogetpriority) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取NNRT任务优先级,仅NNRT设备可用。 | 126| [OH_AI_DeviceInfoAddExtension](#oh_ai_deviceinfoaddextension) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, const char \*name, const char \*value, size_t value_size) | 向设备信息中添加键/值对形式的扩展配置。只对NNRT设备信息有效。 | 127| [OH_AI_ModelCreate](#oh_ai_modelcreate) () | 创建一个模型对象。 | 128| [OH_AI_ModelDestroy](#oh_ai_modeldestroy) ([OH_AI_ModelHandle](#oh_ai_modelhandle) \*model) | 释放一个模型对象。 | 129| [OH_AI_ModelBuild](#oh_ai_modelbuild) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, const void \*model_data, size_t data_size, [OH_AI_ModelType](#oh_ai_modeltype) model_type, const [OH_AI_ContextHandle](#oh_ai_contexthandle) model_context) | 从内存缓冲区加载并编译MindSpore模型。 | 130| [OH_AI_ModelBuildFromFile](#oh_ai_modelbuildfromfile) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, const char \*model_path, [OH_AI_ModelType](#oh_ai_modeltype) model_type, const [OH_AI_ContextHandle](#oh_ai_contexthandle) model_context) | 通过模型文件加载并编译MindSpore模型。 | 131| [OH_AI_ModelResize](#oh_ai_modelresize) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, const [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md) inputs, [OH_AI_ShapeInfo](_o_h___a_i___shape_info.md) \*shape_infos, size_t shape_info_num) | 调整已编译模型的输入形状。 | 132| [OH_AI_ModelPredict](#oh_ai_modelpredict) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, const [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md) inputs, [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md) \*outputs, const [OH_AI_KernelCallBack](#oh_ai_kernelcallback) before, const [OH_AI_KernelCallBack](#oh_ai_kernelcallback) after) | 执行模型推理。 | 133| [OH_AI_ModelGetInputs](#oh_ai_modelgetinputs) (const [OH_AI_ModelHandle](#oh_ai_modelhandle) model) | 获取模型的输入张量数组结构体。 | 134| [OH_AI_ModelGetOutputs](#oh_ai_modelgetoutputs) (const [OH_AI_ModelHandle](#oh_ai_modelhandle) model) | 获取模型的输出张量数组结构体。 | 135| [OH_AI_ModelGetInputByTensorName](#oh_ai_modelgetinputbytensorname) (const [OH_AI_ModelHandle](#oh_ai_modelhandle) model, const char \*tensor_name) | 通过张量名获取模型的输入张量。 | 136| [OH_AI_ModelGetOutputByTensorName](#oh_ai_modelgetoutputbytensorname) (const [OH_AI_ModelHandle](#oh_ai_modelhandle) model, const char \*tensor_name) | 通过张量名获取模型的输出张量。 | 137| [OH_AI_TrainCfgCreate](#oh_ai_traincfgcreate) () | 创建训练配置对象指针,仅用于端侧训练。 | 138| [OH_AI_TrainCfgDestroy](#oh_ai_traincfgdestroy) ([OH_AI_TrainCfgHandle](#oh_ai_traincfghandle) \*train_cfg) | 销毁训练配置对象指针,仅用于端侧训练。 | 139| [OH_AI_TrainCfgGetLossName](#oh_ai_traincfggetlossname) ([OH_AI_TrainCfgHandle](#oh_ai_traincfghandle) train_cfg, size_t \*num) | 获取损失函数的名称列表,仅用于端侧训练。 | 140| [OH_AI_TrainCfgSetLossName](#oh_ai_traincfgsetlossname) ([OH_AI_TrainCfgHandle](#oh_ai_traincfghandle) train_cfg, const char \*\*loss_name, size_t num) | 设置损失函数的名称列表,仅用于端侧训练。 | 141| [OH_AI_TrainCfgGetOptimizationLevel](#oh_ai_traincfggetoptimizationlevel) ([OH_AI_TrainCfgHandle](#oh_ai_traincfghandle) train_cfg) | 获取训练配置的优化等级,仅用于端侧训练。 | 142| [OH_AI_TrainCfgSetOptimizationLevel](#oh_ai_traincfgsetoptimizationlevel) ([OH_AI_TrainCfgHandle](#oh_ai_traincfghandle) train_cfg, [OH_AI_OptimizationLevel](#oh_ai_optimizationlevel) level) | 设置训练配置的优化等级,仅用于端侧训练。 | 143| [OH_AI_TrainModelBuild](#oh_ai_trainmodelbuild) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, const void \*model_data, size_t data_size, [OH_AI_ModelType](#oh_ai_modeltype) model_type, const [OH_AI_ContextHandle](#oh_ai_contexthandle) model_context, const [OH_AI_TrainCfgHandle](#oh_ai_traincfghandle) train_cfg) | 从内存缓冲区加载训练模型,并将模型编译至可在Device上运行的状态,仅用于端侧训练。 | 144| [OH_AI_TrainModelBuildFromFile](#oh_ai_trainmodelbuildfromfile) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, const char \*model_path, [OH_AI_ModelType](#oh_ai_modeltype) model_type, const [OH_AI_ContextHandle](#oh_ai_contexthandle) model_context, const [OH_AI_TrainCfgHandle](#oh_ai_traincfghandle) train_cfg) | 根据路径读取加载训练模型,并将模型编译至可在Device上运行的状态,仅用于端侧训练。 | 145| [OH_AI_RunStep](#oh_ai_runstep) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, const [OH_AI_KernelCallBack](#oh_ai_kernelcallback) before, const [OH_AI_KernelCallBack](#oh_ai_kernelcallback) after) | 单步训练模型,仅用于端侧训练。 | 146| [OH_AI_ModelSetLearningRate](#oh_ai_modelsetlearningrate) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, float learning_rate) | 设置训练的学习率,仅用于端侧训练。 | 147| [OH_AI_ModelGetLearningRate](#oh_ai_modelgetlearningrate) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model) | 获取训练的学习率,仅用于端侧训练。 | 148| [OH_AI_ModelGetWeights](#oh_ai_modelgetweights) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model) | 获取模型的所有权重Tensors,仅用于端侧训练。 | 149| [OH_AI_ModelUpdateWeights](#oh_ai_modelupdateweights) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, const [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md) new_weights) | 更新模型的权重Tensor内容,仅用于端侧训练。 | 150| [OH_AI_ModelGetTrainMode](#oh_ai_modelgettrainmode) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model) | 获取训练模式。 | 151| [OH_AI_ModelSetTrainMode](#oh_ai_modelsettrainmode) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, bool train) | 设置训练模式,仅用于端侧训练。 | 152| [OH_AI_ModelSetupVirtualBatch](#oh_ai_modelsetupvirtualbatch) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, int virtual_batch_multiplier, float lr, float momentum) | OH_AI_API [OH_AI_Status](#oh_ai_status)<br/>设置虚拟batch用于训练,仅用于端侧训练。 | 153| [OH_AI_ExportModel](#oh_ai_exportmodel) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, [OH_AI_ModelType](#oh_ai_modeltype) model_type, const char \*model_file, [OH_AI_QuantizationType](#oh_ai_quantizationtype) quantization_type, bool export_inference_only, char \*\*output_tensor_name, size_t num) | 导出训练模型,仅用于端侧训练。 | 154| [OH_AI_ExportModelBuffer](#oh_ai_exportmodelbuffer) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, [OH_AI_ModelType](#oh_ai_modeltype) model_type, char \*\*model_data, size_t \*data_size, [OH_AI_QuantizationType](#oh_ai_quantizationtype) quantization_type, bool export_inference_only, char \*\*output_tensor_name, size_t num) | 导出训练模型内存缓存,仅用于端侧训练。 | 155| [OH_AI_ExportWeightsCollaborateWithMicro](#oh_ai_exportweightscollaboratewithmicro) ([OH_AI_ModelHandle](#oh_ai_modelhandle) model, [OH_AI_ModelType](#oh_ai_modeltype) model_type, const char \*weight_file, bool is_inference, bool enable_fp16, char \*\*changeable_weights_name, size_t num) | 导出模型权重,只能用于micro推理,仅用于端侧训练。 | 156| [OH_AI_TensorCreate](#oh_ai_tensorcreate) (const char \*name, [OH_AI_DataType](#oh_ai_datatype) type, const int64_t \*shape, size_t shape_num, const void \*data, size_t data_len) | 创建一个张量对象。 | 157| [OH_AI_TensorDestroy](#oh_ai_tensordestroy) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) \*tensor) | 释放张量对象。 | 158| [OH_AI_TensorClone](#oh_ai_tensorclone) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 深拷贝一个张量。 | 159| [OH_AI_TensorSetName](#oh_ai_tensorsetname) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, const char \*name) | 设置张量的名称。 | 160| [OH_AI_TensorGetName](#oh_ai_tensorgetname) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取张量的名称。 | 161| [OH_AI_TensorSetDataType](#oh_ai_tensorsetdatatype) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, [OH_AI_DataType](#oh_ai_datatype) type) | 设置张量的数据类型。 | 162| [OH_AI_TensorGetDataType](#oh_ai_tensorgetdatatype) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取张量类型。 | 163| [OH_AI_TensorSetShape](#oh_ai_tensorsetshape) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, const int64_t \*shape, size_t shape_num) | 设置张量的形状。 | 164| [OH_AI_TensorGetShape](#oh_ai_tensorgetshape) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, size_t \*shape_num) | 获取张量的形状。 | 165| [OH_AI_TensorSetFormat](#oh_ai_tensorsetformat) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, [OH_AI_Format](#oh_ai_format) format) | 设置张量数据的排列方式。 | 166| [OH_AI_TensorGetFormat](#oh_ai_tensorgetformat) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取张量数据的排列方式。 | 167| [OH_AI_TensorSetData](#oh_ai_tensorsetdata) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, void \*data) | 设置张量的数据。 | 168| [OH_AI_TensorGetData](#oh_ai_tensorgetdata) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取张量数据的指针。 | 169| [OH_AI_TensorGetMutableData](#oh_ai_tensorgetmutabledata) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取可变的张量数据指针。如果数据为空则会开辟内存。 | 170| [OH_AI_TensorGetElementNum](#oh_ai_tensorgetelementnum) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取张量元素数量。 | 171| [OH_AI_TensorGetDataSize](#oh_ai_tensorgetdatasize) (const [OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor) | 获取张量中的数据的字节数大小。 | 172| [OH_AI_TensorSetUserData](#oh_ai_tensorsetuserdata) ([OH_AI_TensorHandle](#oh_ai_tensorhandle) tensor, void \*data, size_t data_size) | 设置张量为用户自行管理的数据。此接口常用于复用用户数据作为模型输入,可减少一次数据拷贝。 注意:此数据对于张量来说是外部数据,张量销毁时不会主动释放,由调用者负责释放。另外,在此张量 使用过程中,调用者须确保此数据有效。 | 173 174 175## 宏定义说明 176 177 178### OH_AI_MAX_SHAPE_NUM 179 180``` 181#define OH_AI_MAX_SHAPE_NUM 32 182``` 183 184**描述** 185 186维度信息,最大的维度为**MS_MAX_SHAPE_NUM**。 187 188**起始版本:** 9 189 190 191## 类型定义说明 192 193 194### NNRTDeviceDesc 195 196``` 197typedef struct NNRTDeviceDesc NNRTDeviceDesc 198``` 199 200**描述** 201 202NNRT设备信息描述,包含设备ID,设备名称等信息。 203 204**起始版本:** 10 205 206 207### OH_AI_CallBackParam 208 209``` 210typedef struct OH_AI_CallBackParamOH_AI_CallBackParam 211``` 212 213**描述** 214 215回调函数中传入的算子信息。 216 217**起始版本:** 9 218 219 220### OH_AI_ContextHandle 221 222``` 223typedef void* OH_AI_ContextHandle 224``` 225 226**描述** 227 228Mindspore的上下文信息的指针,该指针会指向Context。 229 230**起始版本:** 9 231 232 233### OH_AI_DataType 234 235``` 236typedef enum OH_AI_DataTypeOH_AI_DataType 237``` 238 239**描述** 240 241MSTensor保存的数据支持的类型。 242 243**起始版本:** 9 244 245 246### OH_AI_DeviceInfoHandle 247 248``` 249typedef void* OH_AI_DeviceInfoHandle 250``` 251 252**描述** 253 254Mindspore的运行设备信息的指针。 255 256**起始版本:** 9 257 258 259### OH_AI_DeviceType 260 261``` 262typedef enum OH_AI_DeviceTypeOH_AI_DeviceType 263``` 264 265**描述** 266 267设备类型信息,包含了目前支持的设备类型。 268 269**起始版本:** 9 270 271 272### OH_AI_Format 273 274``` 275typedef enum OH_AI_FormatOH_AI_Format 276``` 277 278**描述** 279 280MSTensor保存的数据支持的排列格式。 281 282**起始版本:** 9 283 284 285### OH_AI_KernelCallBack 286 287``` 288typedef bool(* OH_AI_KernelCallBack) (const OH_AI_TensorHandleArray inputs, const OH_AI_TensorHandleArray outputs, const OH_AI_CallBackParam kernel_Info) 289``` 290 291**描述** 292 293回调函数指针。 294 295该函数指针是用于设置[OH_AI_ModelPredict](#oh_ai_modelpredict)函数参数中的两个回调函数。 该指针指向的函数需要包含三个参数,其中inputs和outputs对应了算子的输入和输出张量,kernel_Info表示当前算子的信息。 可以通过回调函数监控算子执行的情况,例如统计算子的执行时间,校验算子的正确性等等。 296 297**起始版本:** 9 298 299 300### OH_AI_ModelHandle 301 302``` 303typedef void* OH_AI_ModelHandle 304``` 305 306**描述** 307 308指向模型对象的指针。 309 310**起始版本:** 9 311 312 313### OH_AI_ModelType 314 315``` 316typedef enum OH_AI_ModelTypeOH_AI_ModelType 317``` 318 319**描述** 320 321模型文件的类型 322 323**起始版本:** 9 324 325 326### OH_AI_NNRTDeviceType 327 328``` 329typedef enum OH_AI_NNRTDeviceTypeOH_AI_NNRTDeviceType 330``` 331 332**描述** 333 334NNRT管理的硬件设备类型 335 336**起始版本:** 10 337 338 339### OH_AI_PerformanceMode 340 341``` 342typedef enum OH_AI_PerformanceModeOH_AI_PerformanceMode 343``` 344 345**描述** 346 347NNRT硬件的工作性能模式 348 349**起始版本:** 10 350 351 352### OH_AI_Priority 353 354``` 355typedef enum OH_AI_PriorityOH_AI_Priority 356``` 357 358**描述** 359 360NNRT推理任务优先级 361 362**起始版本:** 10 363 364 365### OH_AI_Status 366 367``` 368typedef enum OH_AI_StatusOH_AI_Status 369``` 370 371**描述** 372 373Minspore的状态码 374 375**起始版本:** 9 376 377 378### OH_AI_TensorHandle 379 380``` 381typedef void* OH_AI_TensorHandle 382``` 383 384**描述** 385 386指向张量对象句柄 387 388**起始版本:** 9 389 390 391### OH_AI_TensorHandleArray 392 393``` 394typedef struct OH_AI_TensorHandleArrayOH_AI_TensorHandleArray 395``` 396 397**描述** 398 399张量数组结构体,用于存储张量数组指针和张量数组长度 400 401**起始版本:** 9 402 403 404### OH_AI_TrainCfgHandle 405 406``` 407typedef void* OH_AI_TrainCfgHandle 408``` 409 410**描述** 411 412指向训练配置对象的指针。 413 414**起始版本:** 11 415 416 417## 枚举类型说明 418 419 420### OH_AI_CompCode 421 422``` 423enum OH_AI_CompCode 424``` 425 426**描述** 427 428Minspore不同组件的代码 429 430**起始版本:** 9 431 432| 枚举值 | 描述 | 433| -------- | -------- | 434| OH_AI_COMPCODE_CORE | MindSpore Core的代码 | 435| OH_AI_COMPCODE_MD | MindSpore MindData的代码。 | 436| OH_AI_COMPCODE_ME | MindSpore MindExpression的代码。 | 437| OH_AI_COMPCODE_MC | MindSpore的代码。 | 438| OH_AI_COMPCODE_LITE | MindSpore Lite的代码 | 439 440 441### OH_AI_DataType 442 443``` 444enum OH_AI_DataType 445``` 446 447**描述** 448 449MSTensor保存的数据支持的类型。 450 451**起始版本:** 9 452 453| 枚举值 | 描述 | 454| -------- | -------- | 455| OH_AI_DATATYPE_UNKNOWN | 未知的数据类型 | 456| OH_AI_DATATYPE_OBJECTTYPE_STRING | String数据类型 | 457| OH_AI_DATATYPE_OBJECTTYPE_LIST | List数据类型 | 458| OH_AI_DATATYPE_OBJECTTYPE_TUPLE | Tuple数据类型 | 459| OH_AI_DATATYPE_OBJECTTYPE_TENSOR | TensorList数据类型 | 460| OH_AI_DATATYPE_NUMBERTYPE_BEGIN | Number类型的起始 | 461| OH_AI_DATATYPE_NUMBERTYPE_BOOL | Bool数据类型 | 462| OH_AI_DATATYPE_NUMBERTYPE_INT8 | Int8数据类型 | 463| OH_AI_DATATYPE_NUMBERTYPE_INT16 | 表示Int16数据类型 | 464| OH_AI_DATATYPE_NUMBERTYPE_INT32 | 表示Int32数据类型 | 465| OH_AI_DATATYPE_NUMBERTYPE_INT64 | 表示Int64数据类型 | 466| OH_AI_DATATYPE_NUMBERTYPE_UINT8 | 表示UInt8数据类型 | 467| OH_AI_DATATYPE_NUMBERTYPE_UINT16 | 表示UInt16数据类型 | 468| OH_AI_DATATYPE_NUMBERTYPE_UINT32 | 表示UInt32数据类型 | 469| OH_AI_DATATYPE_NUMBERTYPE_UINT64 | 表示UInt64数据类型 | 470| OH_AI_DATATYPE_NUMBERTYPE_FLOAT16 | 表示Float16数据类型 | 471| OH_AI_DATATYPE_NUMBERTYPE_FLOAT32 | 表示Float32数据类型 | 472| OH_AI_DATATYPE_NUMBERTYPE_FLOAT64 | 表示Float64数据类型 | 473| OH_AI_DATATYPE_NUMBERTYPE_END | 表示Number类型的结尾 | 474| OH_AI_DataTypeInvalid | 表示无效的数据类型 | 475 476 477### OH_AI_DeviceType 478 479``` 480enum OH_AI_DeviceType 481``` 482 483**描述** 484 485设备类型信息,包含了目前支持的设备类型。 486 487**起始版本:** 9 488 489| 枚举值 | 描述 | 490| -------- | -------- | 491| OH_AI_DEVICETYPE_CPU | 设备类型是CPU | 492| OH_AI_DEVICETYPE_GPU | 设备类型是GPU | 493| OH_AI_DEVICETYPE_KIRIN_NPU | 设备类型是麒麟NPU | 494| OH_AI_DEVICETYPE_NNRT | 设备类型是NNRt<br/>OHOS设备范围是[60,80)。 | 495| OH_AI_DEVICETYPE_INVALID | 设备类型无效 | 496 497 498### OH_AI_Format 499 500``` 501enum OH_AI_Format 502``` 503 504**描述** 505 506MSTensor保存的数据支持的排列格式。 507 508**起始版本:** 9 509 510| 枚举值 | 描述 | 511| -------- | -------- | 512| OH_AI_FORMAT_NCHW | 按批次N、通道C、高度H和宽度W的顺序存储张量数据。 | 513| OH_AI_FORMAT_NHWC | 按批次N、高度H、宽度W和通道C的顺序存储张量数据。 | 514| OH_AI_FORMAT_NHWC4 | 按批次N、高度H、宽度W和通道C的顺序存储张量数据,其中C轴是4字节对齐格式。 | 515| OH_AI_FORMAT_HWKC | 按高度H、宽度W、核数K和通道C的顺序存储张量数据。 | 516| OH_AI_FORMAT_HWCK | 按高度H、宽度W、通道C和核数K的顺序存储张量数据。 | 517| OH_AI_FORMAT_KCHW | 按核数K、通道C、高度H和宽度W的顺序存储张量数据。 | 518| OH_AI_FORMAT_CKHW | 按通道C、核数K、高度H和宽度W的顺序存储张量数据。 | 519| OH_AI_FORMAT_KHWC | 按核数K、高度H、宽度W和通道C的顺序存储张量数据。 | 520| OH_AI_FORMAT_CHWK | 按通道C、高度H、宽度W和核数K的顺序存储张量数据。 | 521| OH_AI_FORMAT_HW | 按高度H和宽度W的顺序存储张量数据。 | 522| OH_AI_FORMAT_HW4 | 按高度H和宽度W的顺序存储张量数据,其中W轴是4字节对齐格式。 | 523| OH_AI_FORMAT_NC | 按批次N和通道C的顺序存储张量数据。 | 524| OH_AI_FORMAT_NC4 | 按批次N和通道C的顺序存储张量数据,其中C轴是4字节对齐格式。 | 525| OH_AI_FORMAT_NC4HW4 | 按批次N、通道C、高度H和宽度W的顺序存储张量数据,其中C轴和W轴是4字节对齐格式。 | 526| OH_AI_FORMAT_NCDHW | 按批次N、通道C、深度D、高度H和宽度W的顺序存储张量数据。 | 527| OH_AI_FORMAT_NWC | 按批次N、宽度W和通道C的顺序存储张量数据。 | 528| OH_AI_FORMAT_NCW | 按批次N、通道C和宽度W的顺序存储张量数据。 | 529 530 531### OH_AI_ModelType 532 533``` 534enum OH_AI_ModelType 535``` 536 537**描述** 538 539模型文件的类型 540 541**起始版本:** 9 542 543| 枚举值 | 描述 | 544| -------- | -------- | 545| OH_AI_MODELTYPE_MINDIR | 模型类型是MindIR,对应的模型文件后缀为.ms。 | 546| OH_AI_MODELTYPE_INVALID | 模型类型无效 | 547 548 549### OH_AI_NNRTDeviceType 550 551``` 552enum OH_AI_NNRTDeviceType 553``` 554 555**描述** 556 557NNRT管理的硬件设备类型 558 559**起始版本:** 10 560 561| 枚举值 | 描述 | 562| -------- | -------- | 563| OH_AI_NNRTDEVICE_OTHERS | 设备类型不属于以下3种,则属于其它 | 564| OH_AI_NNRTDEVICE_CPU | CPU设备 | 565| OH_AI_NNRTDEVICE_GPU | GPU设备 | 566| OH_AI_NNRTDEVICE_ACCELERATOR | 特定的加速设备 | 567 568 569### OH_AI_OptimizationLevel 570 571``` 572enum OH_AI_OptimizationLevel 573``` 574 575**描述:** 576 577训练优化等级。 578 579**起始版本:** 580 581**11** 582 583| 枚举值 | 描述 | 584| -------- | -------- | 585| OH_AI_KO0 | 无优化等级。 | 586| OH_AI_KO2 | 将网络转换为float16, 保持批量归一化层和损失函数为float32。 | 587| OH_AI_KO3 | 将网络转换为float16, 包括批量归一化层 | 588| OH_AI_KAUTO | 根据设备选择优化等级。 | 589| OH_AI_KOPTIMIZATIONTYPE | 无效优化等级。 | 590 591 592### OH_AI_PerformanceMode 593 594``` 595enum OH_AI_PerformanceMode 596``` 597 598**描述** 599 600NNRT硬件的工作性能模式 601 602**起始版本:** 10 603 604| 枚举值 | 描述 | 605| -------- | -------- | 606| OH_AI_PERFORMANCE_NONE | 无特殊设置 | 607| OH_AI_PERFORMANCE_LOW | 低功耗模式 | 608| OH_AI_PERFORMANCE_MEDIUM | 功耗-性能均衡模式 | 609| OH_AI_PERFORMANCE_HIGH | 高性能模式 | 610| OH_AI_PERFORMANCE_EXTREME | 极致性能模式 | 611 612 613### OH_AI_Priority 614 615``` 616enum OH_AI_Priority 617``` 618 619**描述** 620 621NNRT推理任务优先级 622 623**起始版本:** 10 624 625| 枚举值 | 描述 | 626| -------- | -------- | 627| OH_AI_PRIORITY_NONE | 无优先级偏好 | 628| OH_AI_PRIORITY_LOW | 低优先级任务 | 629| OH_AI_PRIORITY_MEDIUM | 中优先级任务 | 630| OH_AI_PRIORITY_HIGH | 高优先级 | 631 632 633### OH_AI_QuantizationType 634 635``` 636enum OH_AI_QuantizationType 637``` 638 639**描述:** 640 641量化类型信息。 642 643**起始版本:** 644 645**11** 646 647| 枚举值 | 描述 | 648| -------- | -------- | 649| OH_AI_NO_QUANT | 不做量化 | 650| OH_AI_WEIGHT_QUANT | 权重量化 | 651| OH_AI_FULL_QUANT | 全量化 | 652| OH_AI_UNKNOWN_QUANT_TYPE | 无效量化类型 | 653 654 655### OH_AI_Status 656 657``` 658enum OH_AI_Status 659``` 660 661**描述** 662 663Minspore的状态码 664 665**起始版本:** 9 666 667| 枚举值 | 描述 | 668| -------- | -------- | 669| OH_AI_STATUS_SUCCESS | 通用的成功状态码 | 670| OH_AI_STATUS_CORE_FAILED | Mindspore Core 失败状态码 | 671| OH_AI_STATUS_LITE_ERROR | Mindspore Lite 异常状态码 | 672| OH_AI_STATUS_LITE_NULLPTR | Mindspore Lite 空指针状态码 | 673| OH_AI_STATUS_LITE_PARAM_INVALID | Mindspore Lite 参数异常状态码 | 674| OH_AI_STATUS_LITE_NO_CHANGE | Mindspore Lite 未改变状态码 | 675| OH_AI_STATUS_LITE_SUCCESS_EXIT | Mindspore Lite 没有错误但是退出的状态码 | 676| OH_AI_STATUS_LITE_MEMORY_FAILED | Mindspore Lite 内存分配失败的状态码 | 677| OH_AI_STATUS_LITE_NOT_SUPPORT | Mindspore Lite 功能未支持的状态码 | 678| OH_AI_STATUS_LITE_THREADPOOL_ERROR | Mindspore Lite 线程池异常状态码 | 679| OH_AI_STATUS_LITE_UNINITIALIZED_OBJ | Mindspore Lite 未初始化状态码 | 680| OH_AI_STATUS_LITE_OUT_OF_TENSOR_RANGE | Mindspore Lite 张量溢出错误的状态码 | 681| OH_AI_STATUS_LITE_INPUT_TENSOR_ERROR | Mindspore Lite 输入张量异常的状态码 | 682| OH_AI_STATUS_LITE_REENTRANT_ERROR | Mindspore Lite 重入异常的状态码 | 683| OH_AI_STATUS_LITE_GRAPH_FILE_ERROR | Mindspore Lite 文件异常状态码 | 684| OH_AI_STATUS_LITE_NOT_FIND_OP | Mindspore Lite 未找到算子的状态码 | 685| OH_AI_STATUS_LITE_INVALID_OP_NAME | Mindspore Lite 无效算子状态码 | 686| OH_AI_STATUS_LITE_INVALID_OP_ATTR | Mindspore Lite 无效算子超参数状态码 | 687| OH_AI_STATUS_LITE_OP_EXECUTE_FAILURE | Mindspore Lite 算子执行失败的状态码 | 688| OH_AI_STATUS_LITE_FORMAT_ERROR | Mindspore Lite 张量格式异常状态码 | 689| OH_AI_STATUS_LITE_INFER_ERROR | Mindspore Lite 形状推理异常状态码 | 690| OH_AI_STATUS_LITE_INFER_INVALID | Mindspore Lite 无效的形状推理的状态码 | 691| OH_AI_STATUS_LITE_INPUT_PARAM_INVALID | Mindspore Lite 用户输入的参数无效状态码 | 692 693 694## 函数说明 695 696 697### OH_AI_ContextAddDeviceInfo() 698 699``` 700OH_AI_API void OH_AI_ContextAddDeviceInfo (OH_AI_ContextHandle context, OH_AI_DeviceInfoHandle device_info ) 701``` 702 703**描述** 704 705将一个用户定义的运行设备信息附加到推理上下文中。 706 707**起始版本:** 9 708 709**参数:** 710 711| 名称 | 描述 | 712| -------- | -------- | 713| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 714| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 715 716 717### OH_AI_ContextCreate() 718 719``` 720OH_AI_API OH_AI_ContextHandle OH_AI_ContextCreate () 721``` 722 723**描述** 724 725创建一个上下文的对象。 726 727**起始版本:** 9 728 729**返回:** 730 731指向上下文信息的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 732 733 734### OH_AI_ContextDestroy() 735 736``` 737OH_AI_API void OH_AI_ContextDestroy (OH_AI_ContextHandle * context) 738``` 739 740**描述** 741 742释放上下文对象。 743 744**起始版本:** 9 745 746**参数:** 747 748| 名称 | 描述 | 749| -------- | -------- | 750| context | 指向[OH_AI_ContextHandle](#oh_ai_contexthandle)的二级指针,上下文销毁后会对context置为空指针。 | 751 752 753### OH_AI_ContextGetEnableParallel() 754 755``` 756OH_AI_API bool OH_AI_ContextGetEnableParallel (const OH_AI_ContextHandle context) 757``` 758 759**描述** 760 761获取是否支持算子间并行。 762 763**起始版本:** 9 764 765**参数:** 766 767| 名称 | 描述 | 768| -------- | -------- | 769| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 770 771**返回:** 772 773是否支持并行。true 为支持并行, false 为不支持并行。 774 775 776### OH_AI_ContextGetThreadAffinityCoreList() 777 778``` 779OH_AI_API const int32_t* OH_AI_ContextGetThreadAffinityCoreList (const OH_AI_ContextHandle context, size_t * core_num ) 780``` 781 782**描述** 783 784获取CPU绑核列表。 785 786**起始版本:** 9 787 788**参数:** 789 790| 名称 | 描述 | 791| -------- | -------- | 792| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 793| core_num | 该参数是输出参数,表示核的数量。 | 794 795**返回:** 796 797CPU绑核列表。此列表对象由[OH_AI_ContextHandle](#oh_ai_contexthandle)管理,调用者无须手动释放。 798 799 800### OH_AI_ContextGetThreadAffinityMode() 801 802``` 803OH_AI_API int OH_AI_ContextGetThreadAffinityMode (const OH_AI_ContextHandle context) 804``` 805 806**描述** 807 808获取运行时线程绑定CPU核心的策略。 809 810**起始版本:** 9 811 812**参数:** 813 814| 名称 | 描述 | 815| -------- | -------- | 816| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 817 818**返回:** 819 820绑核策略。一共有三种策略,0为不绑核, 1为大核优先, 2为中核优先。 821 822 823### OH_AI_ContextGetThreadNum() 824 825``` 826OH_AI_API int32_t OH_AI_ContextGetThreadNum (const OH_AI_ContextHandle context) 827``` 828 829**描述** 830 831获取线程数量。 832 833**起始版本:** 9 834 835**参数:** 836 837| 名称 | 描述 | 838| -------- | -------- | 839| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 840 841**返回:** 842 843当前的线程数量。 844 845 846### OH_AI_ContextSetEnableParallel() 847 848``` 849OH_AI_API void OH_AI_ContextSetEnableParallel (OH_AI_ContextHandle context, bool is_parallel ) 850``` 851 852**描述** 853 854设置运行时是否支持并行。此接口特性当前未开启,设置无效。 855 856**起始版本:** 9 857 858**参数:** 859 860| 名称 | 描述 | 861| -------- | -------- | 862| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 863| is_parallel | 是否支持并行。true 为支持并行, false 为不支持并行。 | 864 865 866### OH_AI_ContextSetThreadAffinityCoreList() 867 868``` 869OH_AI_API void OH_AI_ContextSetThreadAffinityCoreList (OH_AI_ContextHandle context, const int32_t * core_list, size_t core_num ) 870``` 871 872**描述** 873 874设置运行时线程绑定CPU核心的列表。 875 876例如:当core_list=[2,6,8]时,则线程会在CPU的第2,6,8个核心上运行。 如果对于同一个上下文对象,调用了[OH_AI_ContextSetThreadAffinityMode](#oh_ai_contextsetthreadaffinitymode)和[OH_AI_ContextSetThreadAffinityCoreList](#oh_ai_contextsetthreadaffinitycorelist) 这两个函数,则仅[OH_AI_ContextSetThreadAffinityCoreList](#oh_ai_contextsetthreadaffinitycorelist)的core_list参数生效,而[OH_AI_ContextSetThreadAffinityMode](#oh_ai_contextsetthreadaffinitymode)的 mode参数不生效。 877 878**起始版本:** 9 879 880**参数:** 881 882| 名称 | 描述 | 883| -------- | -------- | 884| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 885| core_list | CPU绑核的列表。 | 886| core_num | 核的数量,它就代表**core_list**的长度。 | 887 888 889### OH_AI_ContextSetThreadAffinityMode() 890 891``` 892OH_AI_API void OH_AI_ContextSetThreadAffinityMode (OH_AI_ContextHandle context, int mode ) 893``` 894 895**描述** 896 897设置运行时线程绑定CPU核心的策略,按照CPU物理核频率分为大、中、小三种类型的核心,并且仅需绑大核或者绑中核,不需要绑小核。 898 899**起始版本:** 9 900 901**参数:** 902 903| 名称 | 描述 | 904| -------- | -------- | 905| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 906| mode | 绑核策略。一共有三种策略,0为不绑核, 1为大核优先, 2为中核优先。 | 907 908 909### OH_AI_ContextSetThreadNum() 910 911``` 912OH_AI_API void OH_AI_ContextSetThreadNum (OH_AI_ContextHandle context, int32_t thread_num ) 913``` 914 915**描述** 916 917设置运行时的线程数量。 918 919**起始版本:** 9 920 921**参数:** 922 923| 名称 | 描述 | 924| -------- | -------- | 925| context | 指向上下文信息实例的[OH_AI_ContextHandle](#oh_ai_contexthandle) | 926| thread_num | 运行时的线程数量。 | 927 928 929### OH_AI_CreateNNRTDeviceInfoByName() 930 931``` 932OH_AI_API OH_AI_DeviceInfoHandle OH_AI_CreateNNRTDeviceInfoByName (const char * name) 933``` 934 935**描述** 936 937查找指定名称的NNRT设备,根据找到的第一个设备信息,创建NNRT设备信息。 938 939**起始版本:** 10 940 941**参数:** 942 943| 名称 | 描述 | 944| -------- | -------- | 945| name | 目标NNRT设备名。 | 946 947**返回:** 948 949指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 950 951 952### OH_AI_CreateNNRTDeviceInfoByType() 953 954``` 955OH_AI_API OH_AI_DeviceInfoHandle OH_AI_CreateNNRTDeviceInfoByType (OH_AI_NNRTDeviceType type) 956``` 957 958**描述** 959 960查找指定类型的NNRT设备,根据找到的第一个设备信息,创建NNRT设备信息。 961 962**起始版本:** 10 963 964**参数:** 965 966| 名称 | 描述 | 967| -------- | -------- | 968| type | [OH_AI_NNRTDeviceType](#oh_ai_nnrtdevicetype) 目标NNRT设备类型。 | 969 970**返回:** 971 972指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 973 974 975### OH_AI_DestroyAllNNRTDeviceDescs() 976 977``` 978OH_AI_API void OH_AI_DestroyAllNNRTDeviceDescs (NNRTDeviceDesc ** desc) 979``` 980 981**描述** 982 983销毁从[OH_AI_GetAllNNRTDeviceDescs](#oh_ai_getallnnrtdevicedescs)获取的NNRT描写信息实例数组。 984 985**起始版本:** 10 986 987**参数:** 988 989| 名称 | 描述 | 990| -------- | -------- | 991| desc | 指向NNRT设备描述信息实例数组的二重指针。销毁结束,desc指向内容会被置为NULL。 | 992 993 994### OH_AI_DeviceInfoAddExtension() 995 996``` 997OH_AI_API OH_AI_Status OH_AI_DeviceInfoAddExtension (OH_AI_DeviceInfoHandle device_info, const char * name, const char * value, size_t value_size ) 998``` 999 1000**描述** 1001 1002向设备信息中添加键/值对形式的扩展配置。只对NNRT设备信息有效。 1003 1004注意:当前仅支持{"CachePath": "YourCachePath"},{"CacheVersion": "YouCacheVersion"}, {"QuantParam": "YourQuantConfig"} 三种键值对配置,用户根据使用情况替换具体的值。 1005 1006**起始版本:** 10 1007 1008**参数:** 1009 1010| 名称 | 描述 | 1011| -------- | -------- | 1012| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1013| name | 单个扩展项的键,格式为C字符串。 | 1014| value | 单个扩展项的值内容首地址。 | 1015| value_size | 单个扩展项的值内容长度。 | 1016 1017**返回:** 1018 1019[OH_AI_Status](#oh_ai_status) 执行状态码,若成功返回OH_AI_STATUS_SUCCESS,失败则返回具体错误码。 1020 1021 1022### OH_AI_DeviceInfoCreate() 1023 1024``` 1025OH_AI_API OH_AI_DeviceInfoHandle OH_AI_DeviceInfoCreate (OH_AI_DeviceType device_type) 1026``` 1027 1028**描述** 1029 1030创建一个设备信息对象。 1031 1032**起始版本:** 9 1033 1034**参数:** 1035 1036| 名称 | 描述 | 1037| -------- | -------- | 1038| device_type | 设备类型, 具体见[OH_AI_DeviceType](#oh_ai_devicetype)。 | 1039 1040**返回:** 1041 1042指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 1043 1044 1045### OH_AI_DeviceInfoDestroy() 1046 1047``` 1048OH_AI_API void OH_AI_DeviceInfoDestroy (OH_AI_DeviceInfoHandle * device_info) 1049``` 1050 1051**描述** 1052 1053释放设备信息实例。注意:设备信息实例被添加到context后,无须调用者手动释放。 1054 1055**起始版本:** 9 1056 1057**参数:** 1058 1059| 名称 | 描述 | 1060| -------- | -------- | 1061| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1062 1063 1064### OH_AI_DeviceInfoGetDeviceId() 1065 1066``` 1067OH_AI_API size_t OH_AI_DeviceInfoGetDeviceId (const OH_AI_DeviceInfoHandle device_info) 1068``` 1069 1070**描述** 1071 1072获取NNRT设备ID,仅NNRT设备可用。 1073 1074**起始版本:** 10 1075 1076**参数:** 1077 1078| 名称 | 描述 | 1079| -------- | -------- | 1080| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1081 1082**返回:** 1083 1084NNRT设备ID。 1085 1086 1087### OH_AI_DeviceInfoGetDeviceType() 1088 1089``` 1090OH_AI_API OH_AI_DeviceType OH_AI_DeviceInfoGetDeviceType (const OH_AI_DeviceInfoHandle device_info) 1091``` 1092 1093**描述** 1094 1095获取设备的类型。 1096 1097**起始版本:** 9 1098 1099**参数:** 1100 1101| 名称 | 描述 | 1102| -------- | -------- | 1103| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1104 1105**返回:** 1106 1107生产商设备类型。 1108 1109 1110### OH_AI_DeviceInfoGetEnableFP16() 1111 1112``` 1113OH_AI_API bool OH_AI_DeviceInfoGetEnableFP16 (const OH_AI_DeviceInfoHandle device_info) 1114``` 1115 1116**描述** 1117 1118获取是否开启float16推理模式, 仅CPU/GPU设备可用。 1119 1120**起始版本:** 9 1121 1122**参数:** 1123 1124| 名称 | 描述 | 1125| -------- | -------- | 1126| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1127 1128**返回:** 1129 1130设置是否开启float16推理模式。 1131 1132 1133### OH_AI_DeviceInfoGetFrequency() 1134 1135``` 1136OH_AI_API int OH_AI_DeviceInfoGetFrequency (const OH_AI_DeviceInfoHandle device_info) 1137``` 1138 1139**描述** 1140 1141获取NPU的频率类型,仅NPU设备可用。 1142 1143**起始版本:** 9 1144 1145**参数:** 1146 1147| 名称 | 描述 | 1148| -------- | -------- | 1149| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1150 1151**返回:** 1152 1153NPU的频率类型。取值范围为0-4,1表示低功耗,2表示平衡,3表示高性能,4表示超高性能。 1154 1155 1156### OH_AI_DeviceInfoGetPerformanceMode() 1157 1158``` 1159OH_AI_API OH_AI_PerformanceMode OH_AI_DeviceInfoGetPerformanceMode (const OH_AI_DeviceInfoHandle device_info) 1160``` 1161 1162**描述** 1163 1164获取NNRT性能模式,仅NNRT设备可用。 1165 1166**起始版本:** 10 1167 1168**参数:** 1169 1170| 名称 | 描述 | 1171| -------- | -------- | 1172| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1173 1174**返回:** 1175 1176[OH_AI_PerformanceMode](#oh_ai_performancemode) NNRT性能模式。 1177 1178 1179### OH_AI_DeviceInfoGetPriority() 1180 1181``` 1182OH_AI_API OH_AI_Priority OH_AI_DeviceInfoGetPriority (const OH_AI_DeviceInfoHandle device_info) 1183``` 1184 1185**描述** 1186 1187获取NNRT任务优先级,仅NNRT设备可用。 1188 1189**起始版本:** 10 1190 1191**参数:** 1192 1193| 名称 | 描述 | 1194| -------- | -------- | 1195| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1196 1197**返回:** 1198 1199[OH_AI_Priority](#oh_ai_priority) NNRT任务优先级。 1200 1201 1202### OH_AI_DeviceInfoGetProvider() 1203 1204``` 1205OH_AI_API const char* OH_AI_DeviceInfoGetProvider (const OH_AI_DeviceInfoHandle device_info) 1206``` 1207 1208**描述** 1209 1210获取生产商的名称。 1211 1212**起始版本:** 9 1213 1214**参数:** 1215 1216| 名称 | 描述 | 1217| -------- | -------- | 1218| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1219 1220**返回:** 1221 1222生产商的名称。 1223 1224 1225### OH_AI_DeviceInfoGetProviderDevice() 1226 1227``` 1228OH_AI_API const char* OH_AI_DeviceInfoGetProviderDevice (const OH_AI_DeviceInfoHandle device_info) 1229``` 1230 1231**描述** 1232 1233获取生产商设备的名称。 1234 1235**起始版本:** 9 1236 1237**参数:** 1238 1239| 名称 | 描述 | 1240| -------- | -------- | 1241| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1242 1243**返回:** 1244 1245生产商设备的名称。 1246 1247 1248### OH_AI_DeviceInfoSetDeviceId() 1249 1250``` 1251OH_AI_API void OH_AI_DeviceInfoSetDeviceId (OH_AI_DeviceInfoHandle device_info, size_t device_id ) 1252``` 1253 1254**描述** 1255 1256设置NNRT设备ID,仅NNRT设备可用。 1257 1258**起始版本:** 10 1259 1260**参数:** 1261 1262| 名称 | 描述 | 1263| -------- | -------- | 1264| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1265| device_id | NNRT设备ID。 | 1266 1267 1268### OH_AI_DeviceInfoSetEnableFP16() 1269 1270``` 1271OH_AI_API void OH_AI_DeviceInfoSetEnableFP16 (OH_AI_DeviceInfoHandle device_info, bool is_fp16 ) 1272``` 1273 1274**描述** 1275 1276设置是否开启float16推理模式,仅CPU/GPU设备可用。 1277 1278**起始版本:** 9 1279 1280**参数:** 1281 1282| 名称 | 描述 | 1283| -------- | -------- | 1284| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1285| is_fp16 | 是否开启float16推理模式。 | 1286 1287 1288### OH_AI_DeviceInfoSetFrequency() 1289 1290``` 1291OH_AI_API void OH_AI_DeviceInfoSetFrequency (OH_AI_DeviceInfoHandle device_info, int frequency ) 1292``` 1293 1294**描述** 1295 1296设置NPU的频率,仅NPU设备可用。 1297 1298**起始版本:** 9 1299 1300**参数:** 1301 1302| 名称 | 描述 | 1303| -------- | -------- | 1304| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1305| frequency | 频率类型,取值范围为0-4,默认是3。1表示低功耗,2表示平衡,3表示高性能,4表示超高性能。 | 1306 1307 1308### OH_AI_DeviceInfoSetPerformanceMode() 1309 1310``` 1311OH_AI_API void OH_AI_DeviceInfoSetPerformanceMode (OH_AI_DeviceInfoHandle device_info, OH_AI_PerformanceMode mode ) 1312``` 1313 1314**描述** 1315 1316设置NNRT性能模式,仅NNRT设备可用。 1317 1318**起始版本:** 10 1319 1320**参数:** 1321 1322| 名称 | 描述 | 1323| -------- | -------- | 1324| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1325| mode | [OH_AI_PerformanceMode](#oh_ai_performancemode) NNRT性能模式。 | 1326 1327 1328### OH_AI_DeviceInfoSetPriority() 1329 1330``` 1331OH_AI_API void OH_AI_DeviceInfoSetPriority (OH_AI_DeviceInfoHandle device_info, OH_AI_Priority priority ) 1332``` 1333 1334**描述** 1335 1336设置NNRT任务优先级,仅NNRT设备可用。 1337 1338**起始版本:** 10 1339 1340**参数:** 1341 1342| 名称 | 描述 | 1343| -------- | -------- | 1344| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1345| priority | [OH_AI_Priority](#oh_ai_priority) NNRT任务优先级。 | 1346 1347 1348### OH_AI_DeviceInfoSetProvider() 1349 1350``` 1351OH_AI_API void OH_AI_DeviceInfoSetProvider (OH_AI_DeviceInfoHandle device_info, const char * provider ) 1352``` 1353 1354**描述** 1355 1356设置生产商的名称。 1357 1358**起始版本:** 9 1359 1360**参数:** 1361 1362| 名称 | 描述 | 1363| -------- | -------- | 1364| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1365| provider | 生产商的名称。 | 1366 1367 1368### OH_AI_DeviceInfoSetProviderDevice() 1369 1370``` 1371OH_AI_API void OH_AI_DeviceInfoSetProviderDevice (OH_AI_DeviceInfoHandle device_info, const char * device ) 1372``` 1373 1374**描述** 1375 1376设置生产商设备的名称。 1377 1378**起始版本:** 9 1379 1380**参数:** 1381 1382| 名称 | 描述 | 1383| -------- | -------- | 1384| device_info | 指向设备信息实例的[OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle)。 | 1385| device | 生产商设备名称。例如: CPU。 | 1386 1387 1388### OH_AI_ExportModel() 1389 1390``` 1391OH_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 ) 1392``` 1393 1394**描述** 1395 1396导出训练模型,仅用于端侧训练。 1397 1398**起始版本:** 11 1399 1400**参数:** 1401 1402| 名称 | 描述 | 1403| -------- | -------- | 1404| model | 模型对象指针。 | 1405| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。 | 1406| model_file | 导出的模型文件路径。 | 1407| quantization_type | 量化类型。 | 1408| export_inference_only | 是否导出推理模型。 | 1409| output_tensor_name | 设置导出模型的输出Tensor,默认为空表示全量导出。 | 1410| num | 输出Tensor的数量。 | 1411 1412**返回:** 1413 1414枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。 1415 1416### OH_AI_ExportModelBuffer() 1417 1418``` 1419OH_AI_API OH_AI_Status OH_AI_ExportModelBuffer (OH_AI_ModelHandle model, OH_AI_ModelType model_type, char ** model_data, size_t * data_size, OH_AI_QuantizationType quantization_type, bool export_inference_only, char ** output_tensor_name, size_t num ) 1420``` 1421**描述** 1422导出训练模型内存缓存,仅用于端侧训练。 1423 1424**起始版本:** 11 1425 1426**参数:** 1427 1428| 名称 | 描述 | 1429| -------- | -------- | 1430| model | 模型对象指针。 | 1431| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。 | 1432| model_data | 指向导出模型文件缓冲区的指针。 | 1433| data_size | 缓冲区大小。 | 1434| quantization_type | 量化类型。 | 1435| export_inference_only | 是否导出推理模型。 | 1436| output_tensor_name | 设置导出模型的输出Tensor,默认为空表示全量导出。 | 1437| num | 输出Tensor的数量。 | 1438 1439**返回:** 1440 1441枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。 1442 1443 1444### OH_AI_ExportWeightsCollaborateWithMicro() 1445 1446``` 1447OH_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 ) 1448``` 1449 1450**描述** 1451 1452导出模型权重,只能用于micro推理,仅用于端侧训练。 1453 1454**起始版本:** 11 1455 1456**参数:** 1457 1458| 名称 | 描述 | 1459| -------- | -------- | 1460| model | 模型对象指针。 | 1461| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。 | 1462| weight_file | 导出的权重文件路径。 | 1463| is_inference | 是否导出推理模型,当前只支持设置为true。 | 1464| enable_fp16 | 浮点权重是否保存为float16格式。 | 1465| changeable_weights_name | shape可变的权重Tensor名称。 | 1466| num | shape可变的权重Tensor名称的数量。 | 1467 1468**返回:** 1469 1470枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。 1471 1472 1473### OH_AI_GetAllNNRTDeviceDescs() 1474 1475``` 1476OH_AI_API NNRTDeviceDesc* OH_AI_GetAllNNRTDeviceDescs (size_t * num) 1477``` 1478 1479**描述** 1480 1481获取系统中所有NNRT硬件设备的描述信息。 1482 1483**起始版本:** 10 1484 1485**参数:** 1486 1487| 名称 | 描述 | 1488| -------- | -------- | 1489| num | 输出参数,返回设备数量。 | 1490 1491**返回:** 1492 1493指向NNRT设备描述信息实例数组的指针。当获取失败时,返回NULL。 1494 1495 1496### OH_AI_GetDeviceIdFromNNRTDeviceDesc() 1497 1498``` 1499OH_AI_API size_t OH_AI_GetDeviceIdFromNNRTDeviceDesc (const NNRTDeviceDesc * desc) 1500``` 1501 1502**描述** 1503 1504从特定的NNRT设备描述信息实例获取NNRT设备ID。注意,此ID只对NNRT有效。 1505 1506**起始版本:** 10 1507 1508**参数:** 1509 1510| 名称 | 描述 | 1511| -------- | -------- | 1512| desc | 指向NNRT设备描述信息实例的指针。 | 1513 1514**返回:** 1515 1516NNRT设备ID。 1517 1518 1519### OH_AI_GetElementOfNNRTDeviceDescs() 1520 1521``` 1522OH_AI_API NNRTDeviceDesc* OH_AI_GetElementOfNNRTDeviceDescs (NNRTDeviceDesc * descs, size_t index ) 1523``` 1524 1525**描述** 1526 1527获取NNRT设备描述信息数组中的元素指针。 1528 1529**起始版本:** 10 1530 1531**参数:** 1532 1533| 名称 | 描述 | 1534| -------- | -------- | 1535| descs | NNRT设备描述信息数组。 | 1536| index | 数组元素索引。 | 1537 1538**返回:** 1539 1540NNRT设备描述信息类型指针。 1541 1542 1543### OH_AI_GetNameFromNNRTDeviceDesc() 1544 1545``` 1546OH_AI_API const char* OH_AI_GetNameFromNNRTDeviceDesc (const NNRTDeviceDesc * desc) 1547``` 1548 1549**描述** 1550 1551从特定的NNRT设备描述信息实例获取NNRT设备名称。 1552 1553**起始版本:** 10 1554 1555**参数:** 1556 1557| 名称 | 描述 | 1558| -------- | -------- | 1559| desc | 指向NNRT设备描述信息实例的指针。 | 1560 1561**返回:** 1562 1563NNRT设备名称,指向一个常量字符串的指针,该常量字符串由desc持有,调用者无需单独释放此指针。 1564 1565 1566### OH_AI_GetTypeFromNNRTDeviceDesc() 1567 1568``` 1569OH_AI_API OH_AI_NNRTDeviceType OH_AI_GetTypeFromNNRTDeviceDesc (const NNRTDeviceDesc * desc) 1570``` 1571 1572**描述** 1573 1574从特定的NNRT设备描述信息实例获取NNRT设备类型。 1575 1576**起始版本:** 10 1577 1578**参数:** 1579 1580| 名称 | 描述 | 1581| -------- | -------- | 1582| desc | 指向NNRT设备描述信息实例的指针。 | 1583 1584**返回:** 1585 1586[OH_AI_NNRTDeviceType](#oh_ai_nnrtdevicetype) NNRT设备类型。 1587 1588 1589### OH_AI_ModelBuild() 1590 1591``` 1592OH_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 ) 1593``` 1594 1595**描述** 1596 1597从内存缓冲区加载并编译MindSpore模型。 1598 1599注意,同一个[OH_AI_ContextHandle](#oh_ai_contexthandle)对象仅能传递给[OH_AI_ModelBuild](#oh_ai_modelbuild)或者[OH_AI_ModelBuildFromFile](#oh_ai_modelbuildfromfile)一次, 如果多次调用该函数需要创建多个不同的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 1600 1601**起始版本:** 9 1602 1603**参数:** 1604 1605| 名称 | 描述 | 1606| -------- | -------- | 1607| model | 模型对象指针。 | 1608| model_data | 内存中已经加载的模型数据地址。 | 1609| data_size | 模型数据的长度。 | 1610| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。 | 1611| model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 1612 1613**返回:** 1614 1615枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回MSStatus::kMSStatusSuccess则证明创建成功。 1616 1617 1618### OH_AI_ModelBuildFromFile() 1619 1620``` 1621OH_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 ) 1622``` 1623 1624**描述** 1625 1626通过模型文件加载并编译MindSpore模型。 1627 1628注意,同一个[OH_AI_ContextHandle](#oh_ai_contexthandle)对象仅能传递给[OH_AI_ModelBuild](#oh_ai_modelbuild)或者[OH_AI_ModelBuildFromFile](#oh_ai_modelbuildfromfile)一次, 如果多次调用该函数需要创建多个不同的[OH_AI_ContextHandle](#oh_ai_contexthandle)。 1629 1630**起始版本:** 9 1631 1632**参数:** 1633 1634| 名称 | 描述 | 1635| -------- | -------- | 1636| model | 模型对象指针。 | 1637| model_path | 模型文件路径。 | 1638| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。 | 1639| model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 1640 1641**返回:** 1642 1643枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回MSStatus::kMSStatusSuccess则证明创建成功。 1644 1645 1646### OH_AI_ModelCreate() 1647 1648``` 1649OH_AI_API OH_AI_ModelHandle OH_AI_ModelCreate () 1650``` 1651 1652**描述** 1653 1654创建一个模型对象。 1655 1656**起始版本:** 9 1657 1658**返回:** 1659 1660模型对象指针。 1661 1662 1663### OH_AI_ModelDestroy() 1664 1665``` 1666OH_AI_API void OH_AI_ModelDestroy (OH_AI_ModelHandle * model) 1667``` 1668 1669**描述** 1670 1671释放一个模型对象。 1672 1673**起始版本:** 9 1674 1675**参数:** 1676 1677| 名称 | 描述 | 1678| -------- | -------- | 1679| model | 模型对象指针。 | 1680 1681 1682### OH_AI_ModelGetInputByTensorName() 1683 1684``` 1685OH_AI_API OH_AI_TensorHandle OH_AI_ModelGetInputByTensorName (const OH_AI_ModelHandle model, const char * tensor_name ) 1686``` 1687 1688**描述** 1689 1690通过张量名获取模型的输入张量。 1691 1692**起始版本:** 9 1693 1694**参数:** 1695 1696| 名称 | 描述 | 1697| -------- | -------- | 1698| model | 模型对象指针。 | 1699| tensor_name | 张量名称。 | 1700 1701**返回:** 1702 1703tensor_name所对应的输入张量的张量指针,如果输入中没有该张量则返回空。 1704 1705 1706### OH_AI_ModelGetInputs() 1707 1708``` 1709OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetInputs (const OH_AI_ModelHandle model) 1710``` 1711 1712**描述** 1713 1714获取模型的输入张量数组结构体。 1715 1716**起始版本:** 9 1717 1718**参数:** 1719 1720| 名称 | 描述 | 1721| -------- | -------- | 1722| model | 模型对象指针。 | 1723 1724**返回:** 1725 1726模型输入对应的张量数组结构体。 1727 1728 1729### OH_AI_ModelGetLearningRate() 1730 1731``` 1732OH_AI_API float OH_AI_ModelGetLearningRate (OH_AI_ModelHandle model) 1733``` 1734 1735**描述** 1736 1737获取训练的学习率,仅用于端侧训练。 1738 1739**起始版本:** 11 1740 1741**参数:** 1742 1743| 名称 | 描述 | 1744| -------- | -------- | 1745| model | 模型对象指针。 | 1746 1747**返回:** 1748 1749学习率,没有设置优化器时为0.0。 1750 1751 1752### OH_AI_ModelGetOutputByTensorName() 1753 1754``` 1755OH_AI_API OH_AI_TensorHandle OH_AI_ModelGetOutputByTensorName (const OH_AI_ModelHandle model, const char * tensor_name ) 1756``` 1757 1758**描述** 1759 1760通过张量名获取模型的输出张量。 1761 1762**起始版本:** 9 1763 1764**参数:** 1765 1766| 名称 | 描述 | 1767| -------- | -------- | 1768| model | 模型对象指针。 | 1769| tensor_name | 张量名称。 | 1770 1771**返回:** 1772 1773tensor_name所对应的输入张量的张量指针,如果输出中没有该张量则返回空。 1774 1775 1776### OH_AI_ModelGetOutputs() 1777 1778``` 1779OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetOutputs (const OH_AI_ModelHandle model) 1780``` 1781 1782**描述** 1783 1784获取模型的输出张量数组结构体。 1785 1786**起始版本:** 9 1787 1788**参数:** 1789 1790| 名称 | 描述 | 1791| -------- | -------- | 1792| model | 模型对象指针。 | 1793 1794**返回:** 1795 1796模型输出对应的张量数组结构体。 1797 1798 1799### OH_AI_ModelGetTrainMode() 1800 1801``` 1802OH_AI_API bool OH_AI_ModelGetTrainMode (OH_AI_ModelHandle model) 1803``` 1804 1805**描述** 1806 1807获取训练模式。 1808 1809**起始版本:** 11 1810 1811**参数:** 1812 1813| 名称 | 描述 | 1814| -------- | -------- | 1815| model | 模型对象指针。 | 1816 1817**返回:** 1818 1819表示是否是训练模式。 1820 1821 1822### OH_AI_ModelGetWeights() 1823 1824``` 1825OH_AI_API OH_AI_TensorHandleArray OH_AI_ModelGetWeights (OH_AI_ModelHandle model) 1826``` 1827 1828**描述** 1829 1830获取模型的所有权重Tensors,仅用于端侧训练。 1831 1832**起始版本:** 11 1833 1834**参数:** 1835 1836| 名称 | 描述 | 1837| -------- | -------- | 1838| model | 模型对象指针。 | 1839 1840**返回:** 1841 1842模型的所有权重Tensor。 1843 1844 1845### OH_AI_ModelPredict() 1846 1847``` 1848OH_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 ) 1849``` 1850 1851**描述** 1852 1853执行模型推理。 1854 1855**起始版本:** 9 1856 1857**参数:** 1858 1859| 名称 | 描述 | 1860| -------- | -------- | 1861| model | 模型对象指针。 | 1862| inputs | 模型输入对应的张量数组结构体。 | 1863| outputs | 模型输出对应的张量数组结构体的指针。 | 1864| before | 模型推理前执行的回调函数。 | 1865| after | 模型推理后执行的回调函数。 | 1866 1867**返回:** 1868 1869枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回MSStatus::kMSStatusSuccess则证明创建成功。 1870 1871 1872### OH_AI_ModelResize() 1873 1874``` 1875OH_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 ) 1876``` 1877 1878**描述** 1879 1880调整已编译模型的输入形状。 1881 1882**起始版本:** 9 1883 1884**参数:** 1885 1886| 名称 | 描述 | 1887| -------- | -------- | 1888| model | 模型对象指针。 | 1889| inputs | 模型输入对应的张量数组结构体。 | 1890| shape_infos | 输入形状信息数组,按模型输入顺序排列的由形状信息组成的数组,模型会按顺序依次调整张量形状。 | 1891| shape_info_num | 形状信息数组的长度。 | 1892 1893**返回:** 1894 1895枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回MSStatus::kMSStatusSuccess则证明创建成功。 1896 1897 1898### OH_AI_ModelSetLearningRate() 1899 1900``` 1901OH_AI_API OH_AI_Status OH_AI_ModelSetLearningRate (OH_AI_ModelHandle model, float learning_rate ) 1902``` 1903 1904**描述** 1905 1906设置训练的学习率,仅用于端侧训练。 1907 1908**起始版本:** 11 1909 1910**参数:** 1911 1912| 名称 | 描述 | 1913| -------- | -------- | 1914| learning_rate | 学习率 | 1915 1916**返回:** 1917 1918枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。 1919 1920 1921### OH_AI_ModelSetTrainMode() 1922 1923``` 1924OH_AI_API OH_AI_Status OH_AI_ModelSetTrainMode (OH_AI_ModelHandle model, bool train ) 1925``` 1926 1927**描述** 1928 1929设置训练模式,仅用于端侧训练。 1930 1931**起始版本:** 11 1932 1933**参数:** 1934 1935| 名称 | 描述 | 1936| -------- | -------- | 1937| model | 模型对象指针。 | 1938| train | 是否为训练模式。 | 1939 1940**返回:** 1941 1942枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。 1943 1944 1945### OH_AI_ModelSetupVirtualBatch() 1946 1947``` 1948OH_AI_API OH_AI_Status OH_AI_ModelSetupVirtualBatch (OH_AI_ModelHandle model, int virtual_batch_multiplier, float lr, float momentum ) 1949``` 1950 1951**描述** 1952 1953设置虚拟batch用于训练,仅用于端侧训练。 1954 1955**起始版本:** 11 1956 1957**参数:** 1958 1959| 名称 | 描述 | 1960| -------- | -------- | 1961| model | 模型对象指针。 | 1962| virtual_batch_multiplier | 虚拟batch乘法器,当设置值小于1时,表示禁用虚拟batch。 | 1963| lr | 学习率,默认为-1.0f。 | 1964| momentum | 动量,默认为-1.0f。 | 1965 1966**返回:** 1967 1968枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。 1969 1970 1971### OH_AI_ModelUpdateWeights() 1972 1973``` 1974OH_AI_API OH_AI_Status OH_AI_ModelUpdateWeights (OH_AI_ModelHandle model, const OH_AI_TensorHandleArray new_weights ) 1975``` 1976 1977**描述** 1978 1979更新模型的权重Tensor内容,仅用于端侧训练。 1980 1981**起始版本:** 11 1982 1983**参数:** 1984 1985| 名称 | 描述 | 1986| -------- | -------- | 1987| new_weights | 要更新的权重Tensor。 | 1988 1989**返回:** 1990 1991枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。 1992 1993 1994### OH_AI_RunStep() 1995 1996``` 1997OH_AI_API OH_AI_Status OH_AI_RunStep (OH_AI_ModelHandle model, const OH_AI_KernelCallBack before, const OH_AI_KernelCallBack after ) 1998``` 1999 2000**描述** 2001 2002单步训练模型,仅用于端侧训练。 2003 2004**起始版本:** 11 2005 2006**参数:** 2007 2008| 名称 | 描述 | 2009| -------- | -------- | 2010| model | 模型对象指针。 | 2011| before | 模型推理前执行的回调函数。 | 2012| after | 模型推理后执行的回调函数。 | 2013 2014**返回:** 2015 2016枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。 2017 2018 2019### OH_AI_TensorClone() 2020 2021``` 2022OH_AI_API OH_AI_TensorHandle OH_AI_TensorClone (OH_AI_TensorHandle tensor) 2023``` 2024 2025**描述** 2026 2027深拷贝一个张量。 2028 2029**起始版本:** 9 2030 2031**参数:** 2032 2033| 名称 | 描述 | 2034| -------- | -------- | 2035| tensor | 待拷贝张量的指针。 | 2036 2037**返回:** 2038 2039指向新张量对象句柄。 2040 2041 2042### OH_AI_TensorCreate() 2043 2044``` 2045OH_AI_API OH_AI_TensorHandle OH_AI_TensorCreate (const char * name, OH_AI_DataType type, const int64_t * shape, size_t shape_num, const void * data, size_t data_len ) 2046``` 2047 2048**描述** 2049 2050创建一个张量对象。 2051 2052**起始版本:** 9 2053 2054**参数:** 2055 2056| 名称 | 描述 | 2057| -------- | -------- | 2058| name | 张量名称 | 2059| type | 张量的数据类型 | 2060| shape | 张量的维度数组。 | 2061| shape_num | 张量维度数组长度。 | 2062| data | 指向数据的指针。 | 2063| data_len | 数据的长度。 | 2064 2065**返回:** 2066 2067指向张量对象句柄。 2068 2069 2070### OH_AI_TensorDestroy() 2071 2072``` 2073OH_AI_API void OH_AI_TensorDestroy (OH_AI_TensorHandle * tensor) 2074``` 2075 2076**描述** 2077 2078释放张量对象。 2079 2080**起始版本:** 9 2081 2082**参数:** 2083 2084| 名称 | 描述 | 2085| -------- | -------- | 2086| tensor | 指向张量句柄的二级指针。 | 2087 2088 2089### OH_AI_TensorGetData() 2090 2091``` 2092OH_AI_API const void* OH_AI_TensorGetData (const OH_AI_TensorHandle tensor) 2093``` 2094 2095**描述** 2096 2097获取张量数据的指针。 2098 2099**起始版本:** 9 2100 2101**参数:** 2102 2103| 名称 | 描述 | 2104| -------- | -------- | 2105| tensor | 张量对象句柄。 | 2106 2107**返回:** 2108 2109张量数据的指针。 2110 2111 2112### OH_AI_TensorGetDataSize() 2113 2114``` 2115OH_AI_API size_t OH_AI_TensorGetDataSize (const OH_AI_TensorHandle tensor) 2116``` 2117 2118**描述** 2119 2120获取张量中的数据的字节数大小。 2121 2122**起始版本:** 9 2123 2124**参数:** 2125 2126| 名称 | 描述 | 2127| -------- | -------- | 2128| tensor | 张量对象句柄。 | 2129 2130**返回:** 2131 2132张量数据的字节数大小。 2133 2134 2135### OH_AI_TensorGetDataType() 2136 2137``` 2138OH_AI_API OH_AI_DataType OH_AI_TensorGetDataType (const OH_AI_TensorHandle tensor) 2139``` 2140 2141**描述** 2142 2143获取张量类型。 2144 2145**起始版本:** 9 2146 2147**参数:** 2148 2149| 名称 | 描述 | 2150| -------- | -------- | 2151| tensor | 张量对象句柄。 | 2152 2153**返回:** 2154 2155张量的数据类型。 2156 2157 2158### OH_AI_TensorGetElementNum() 2159 2160``` 2161OH_AI_API int64_t OH_AI_TensorGetElementNum (const OH_AI_TensorHandle tensor) 2162``` 2163 2164**描述** 2165 2166获取张量元素数量。 2167 2168**起始版本:** 9 2169 2170**参数:** 2171 2172| 名称 | 描述 | 2173| -------- | -------- | 2174| tensor | 张量对象句柄。 | 2175 2176**返回:** 2177 2178张量的元素数量。 2179 2180 2181### OH_AI_TensorGetFormat() 2182 2183``` 2184OH_AI_API OH_AI_Format OH_AI_TensorGetFormat (const OH_AI_TensorHandle tensor) 2185``` 2186 2187**描述** 2188 2189获取张量数据的排列方式。 2190 2191**起始版本:** 9 2192 2193**参数:** 2194 2195| 名称 | 描述 | 2196| -------- | -------- | 2197| tensor | 张量对象句柄。 | 2198 2199**返回:** 2200 2201张量数据的排列方式。 2202 2203 2204### OH_AI_TensorGetMutableData() 2205 2206``` 2207OH_AI_API void* OH_AI_TensorGetMutableData (const OH_AI_TensorHandle tensor) 2208``` 2209 2210**描述** 2211 2212获取可变的张量数据指针。如果数据为空则会开辟内存。 2213 2214**起始版本:** 9 2215 2216**参数:** 2217 2218| 名称 | 描述 | 2219| -------- | -------- | 2220| tensor | 张量对象句柄。 | 2221 2222**返回:** 2223 2224张量数据的指针。 2225 2226 2227### OH_AI_TensorGetName() 2228 2229``` 2230OH_AI_API const char* OH_AI_TensorGetName (const OH_AI_TensorHandle tensor) 2231``` 2232 2233**描述** 2234 2235获取张量的名称。 2236 2237**起始版本:** 9 2238 2239**参数:** 2240 2241| 名称 | 描述 | 2242| -------- | -------- | 2243| tensor | 张量对象句柄。 | 2244 2245**返回:** 2246 2247张量的名称。 2248 2249 2250### OH_AI_TensorGetShape() 2251 2252``` 2253OH_AI_API const int64_t* OH_AI_TensorGetShape (const OH_AI_TensorHandle tensor, size_t * shape_num ) 2254``` 2255 2256**描述** 2257 2258获取张量的形状。 2259 2260**起始版本:** 9 2261 2262**参数:** 2263 2264| 名称 | 描述 | 2265| -------- | -------- | 2266| tensor | 张量对象句柄。 | 2267| shape_num | 该参数是输出参数,形状数组的长度会写入该变量。 | 2268 2269**返回:** 2270 2271形状数组。 2272 2273 2274### OH_AI_TensorSetData() 2275 2276``` 2277OH_AI_API void OH_AI_TensorSetData (OH_AI_TensorHandle tensor, void * data ) 2278``` 2279 2280**描述** 2281 2282设置张量的数据。 2283 2284**起始版本:** 9 2285 2286**参数:** 2287 2288| 名称 | 描述 | 2289| -------- | -------- | 2290| tensor | 张量对象句柄。 | 2291| data | 指向数据的指针。 | 2292 2293 2294### OH_AI_TensorSetDataType() 2295 2296``` 2297OH_AI_API void OH_AI_TensorSetDataType (OH_AI_TensorHandle tensor, OH_AI_DataType type ) 2298``` 2299 2300**描述** 2301 2302设置张量的数据类型。 2303 2304**起始版本:** 9 2305 2306**参数:** 2307 2308| 名称 | 描述 | 2309| -------- | -------- | 2310| tensor | 张量对象句柄。 | 2311| type | 数据类型,具体见[OH_AI_DataType](#oh_ai_datatype)。 | 2312 2313 2314### OH_AI_TensorSetFormat() 2315 2316``` 2317OH_AI_API void OH_AI_TensorSetFormat (OH_AI_TensorHandle tensor, OH_AI_Format format ) 2318``` 2319 2320**描述** 2321 2322设置张量数据的排列方式。 2323 2324**起始版本:** 9 2325 2326**参数:** 2327 2328| 名称 | 描述 | 2329| -------- | -------- | 2330| tensor | 张量对象句柄。 | 2331| format | 张量数据排列方式。 | 2332 2333 2334### OH_AI_TensorSetName() 2335 2336``` 2337OH_AI_API void OH_AI_TensorSetName (OH_AI_TensorHandle tensor, const char * name ) 2338``` 2339 2340**描述** 2341 2342设置张量的名称。 2343 2344**起始版本:** 9 2345 2346**参数:** 2347 2348| 名称 | 描述 | 2349| -------- | -------- | 2350| tensor | 张量对象句柄。 | 2351| name | 张量名称。 | 2352 2353 2354### OH_AI_TensorSetShape() 2355 2356``` 2357OH_AI_API void OH_AI_TensorSetShape (OH_AI_TensorHandle tensor, const int64_t * shape, size_t shape_num ) 2358``` 2359 2360**描述** 2361 2362设置张量的形状。 2363 2364**起始版本:** 9 2365 2366**参数:** 2367 2368| 名称 | 描述 | 2369| -------- | -------- | 2370| tensor | 张量对象句柄。 | 2371| shape | 形状数组。 | 2372| shape_num | 张量形状数组长度。 | 2373 2374 2375### OH_AI_TensorSetUserData() 2376 2377``` 2378OH_AI_API OH_AI_Status OH_AI_TensorSetUserData (OH_AI_TensorHandle tensor, void * data, size_t data_size ) 2379``` 2380 2381**描述** 2382 2383设置张量为用户自行管理的数据。此接口常用于复用用户数据作为模型输入,可减少一次数据拷贝。 注意:此数据对于张量来说是外部数据,张量销毁时不会主动释放,由调用者负责释放。另外,在此张量 使用过程中,调用者须确保此数据有效。 2384 2385**起始版本:** 10 2386 2387**参数:** 2388 2389| 名称 | 描述 | 2390| -------- | -------- | 2391| tensor | 张量对象句柄。 | 2392| data | 用户数据首地址。 | 2393| data_size | 用户数据长度。 | 2394 2395**返回:** 2396 2397执行状态码。若成功返回OH_AI_STATUS_SUCCESS,否则返回具体错误码。 2398 2399 2400### OH_AI_TrainCfgCreate() 2401 2402``` 2403OH_AI_API OH_AI_TrainCfgHandle OH_AI_TrainCfgCreate () 2404``` 2405 2406**描述** 2407 2408创建训练配置对象指针,仅用于端侧训练。 2409 2410**起始版本:** 11 2411 2412**返回:** 2413 2414训练配置对象指针。 2415 2416 2417### OH_AI_TrainCfgDestroy() 2418 2419``` 2420OH_AI_API void OH_AI_TrainCfgDestroy (OH_AI_TrainCfgHandle * train_cfg) 2421``` 2422 2423**描述** 2424 2425销毁训练配置对象指针,仅用于端侧训练。 2426 2427**起始版本:** 11 2428 2429**参数:** 2430 2431| 名称 | 描述 | 2432| -------- | -------- | 2433| train_cfg | 训练配置对象指针。 | 2434 2435 2436### OH_AI_TrainCfgGetLossName() 2437 2438``` 2439OH_AI_API char** OH_AI_TrainCfgGetLossName (OH_AI_TrainCfgHandle train_cfg, size_t * num ) 2440``` 2441 2442**描述** 2443 2444获取损失函数的名称列表,仅用于端侧训练。 2445 2446**起始版本:** 11 2447 2448**参数:** 2449 2450| 名称 | 描述 | 2451| -------- | -------- | 2452| train_cfg | 训练配置对象指针。 | 2453| num | 损失函数数量。 | 2454 2455**返回:** 2456 2457损失函数的名称列表。 2458 2459 2460### OH_AI_TrainCfgGetOptimizationLevel() 2461 2462``` 2463OH_AI_API OH_AI_OptimizationLevel OH_AI_TrainCfgGetOptimizationLevel (OH_AI_TrainCfgHandle train_cfg) 2464``` 2465 2466**描述** 2467 2468获取训练配置的优化等级,仅用于端侧训练。 2469 2470**起始版本:** 11 2471 2472**参数:** 2473 2474| 名称 | 描述 | 2475| -------- | -------- | 2476| train_cfg | 训练配置对象指针。 | 2477 2478**返回:** 2479 2480优化等级。 2481 2482 2483### OH_AI_TrainCfgSetLossName() 2484 2485``` 2486OH_AI_API void OH_AI_TrainCfgSetLossName (OH_AI_TrainCfgHandle train_cfg, const char ** loss_name, size_t num ) 2487``` 2488 2489**描述** 2490 2491设置损失函数的名称列表,仅用于端侧训练。 2492 2493**起始版本:** 11 2494 2495**参数:** 2496 2497| 名称 | 描述 | 2498| -------- | -------- | 2499| train_cfg | 训练配置对象指针。 | 2500| loss_name | 损失函数的名称列表。 | 2501| num | 损失函数数量。 | 2502 2503 2504### OH_AI_TrainCfgSetOptimizationLevel() 2505 2506``` 2507OH_AI_API void OH_AI_TrainCfgSetOptimizationLevel (OH_AI_TrainCfgHandle train_cfg, OH_AI_OptimizationLevel level ) 2508``` 2509 2510**描述** 2511 2512设置训练配置的优化等级,仅用于端侧训练。 2513 2514**起始版本:** 11 2515 2516**参数:** 2517 2518| 名称 | 描述 | 2519| -------- | -------- | 2520| train_cfg | 训练配置对象指针。 | 2521| level | 优化等级。 | 2522 2523 2524### OH_AI_TrainModelBuild() 2525 2526``` 2527OH_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 ) 2528``` 2529 2530**描述** 2531 2532从内存缓冲区加载训练模型,并将模型编译至可在Device上运行的状态,仅用于端侧训练。 2533 2534**起始版本:** 11 2535 2536**参数:** 2537 2538| 名称 | 描述 | 2539| -------- | -------- | 2540| model | 模型对象指针。 | 2541| model_data | 指向存储读入模型文件缓冲区的指针。 | 2542| data_size | 缓冲区大小。 | 2543| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。 | 2544| model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 2545| train_cfg | 训练配置对象指针。 | 2546 2547**返回:** 2548 2549枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。 2550 2551 2552### OH_AI_TrainModelBuildFromFile() 2553 2554``` 2555OH_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 ) 2556``` 2557 2558**描述** 2559 2560根据路径读取加载训练模型,并将模型编译至可在Device上运行的状态,仅用于端侧训练。 2561 2562**起始版本:** 11 2563 2564**参数:** 2565 2566| 名称 | 描述 | 2567| -------- | -------- | 2568| model | 模型对象指针。 | 2569| model_path | 模型文件路径。 | 2570| model_type | 模型文件类型,具体见[OH_AI_ModelType](#oh_ai_modeltype)。 | 2571| model_context | 模型运行时的上下文环境,具体见 [OH_AI_ContextHandle](#oh_ai_contexthandle)。 | 2572| train_cfg | 训练配置对象指针。 | 2573 2574**返回:** 2575 2576枚举类型的状态码[OH_AI_Status](#oh_ai_status),若返回OH_AI_Status::OH_AI_STATUS_SUCCESS则证明创建成功。 2577