model_c

#include<model_c.h>

Model定义了MindSpore中编译和运行的模型。

公有函数和数据类型

function

MSModelHandle MSModelCreate()

void MSModelDestroy(MSModelHandle* model)

size_t MSModelCalcWorkspaceSize(MSModelHandle model)

void MSModelSetWorkspace(MSModelHandle model, void* workspace, size_t workspace_size)

MSStatus MSModelBuild(MSModelHandle model, const void* model_data, size_t data_size, MSModelType model_type, const MSContextHandle model_context)

MSStatus MSModelBuildFromFile(MSModelHandle model, const char* model_path, MSModelType model_type,const MSContextHandle model_context)

MSStatus MSModelResize(MSModelHandle model, const MSTensorHandleArray inputs, MSShapeInfo* shape_infos,size_t shape_info_num)

MSStatus MSModelPredict(MSModelHandle model, const MSTensorHandleArray inputs, MSTensorHandleArray* outputs,const MSKernelCallBackC before, const MSKernelCallBackC after)

MSStatus MSModelRunStep(MSModelHandle model, const MSKernelCallBackC before, const MSKernelCallBackC after)

MSStatus MSModelSetTrainMode(const MSModelHandle model, bool train)

MSStatus MSModelExportWeight(const MSModelHandle model, const char* export_path)

MSTensorHandleArray MSModelGetInputs(const MSModelHandle model)

MSTensorHandleArray MSModelGetOutputs(const MSModelHandle model)

MSTensorHandle MSModelGetInputByTensorName(const MSModelHandle model, const char* tensor_name)

MSTensorHandle MSModelGetOutputByTensorName(const MSModelHandle model, const char* tensor_name)

公有函数

MSModelCreate

MSModelHandle MSModelCreate()

创建一个模型对象,该选项仅MindSpore Lite有效。

  • 返回值

    模型对象指针。

MSModelDestroy

void MSModelDestroy(MSModelHandle* model)

销毁一个模型对象,该选项仅MindSpore Lite有效。

  • 参数

    • model:指向模型对象指针的指针。

MSModelCalcWorkspaceSize

size_t MSModelCalcWorkspaceSize(MSModelHandle model)

计算模型工作时所需内存空间大小,该选项仅对IoT有效。(该接口未实现)

  • 参数

    • model: 指向模型对象的指针。

MSModelSetWorkspace

void MSModelSetWorkspace(MSModelHandle model, void* workspace, size_t workspace_size)

设置模型的工作空间,该选项仅对IoT有效。(该接口暂未实现)

  • 参数

    • model: 指向模型对象的指针。

    • workspace: 指向工作空间的指针。

    • workspace_size: 工作空间大小。

MSModelBuild

MSStatus MSModelBuild(MSModelHandle model, const void* model_data, size_t data_size, MSModelType model_type, const MSContextHandle model_context)

从内存缓冲区加载并编译MindSpore模型,该选项仅MindSpore Lite有效。

  • 参数

    • model: 指向模型对象的指针。

    • model_data: 内存中已经加载的模型数据地址。

    • data_size: 模型数据的长度。

    • model_type: 模型文件类型,具体见: MSModelType

    • model_context: 模型的上下文环境,具体见: Context

  • 返回值

    枚举类型的状态码MSStatus,若返回MSStatus::kMSStatusSuccess则证明成功。

MSModelBuildFromFile

MSStatus MSModelBuildFromFile(MSModelHandle model, const char* model_path, MSModelType model_type,
                                     const MSContextHandle model_context)

通过模型文件中加载并编译MindSpore模型,该选项仅MindSpore Lite有效。

  • 参数

    • model: 指向模型对象的指针。

    • model_path: 模型文件路径。

    • model_type: 模型文件类型,具体见: MSModelType

    • model_context: 模型的上下文环境,具体见: Context

  • 返回值

    枚举类型的状态码MSStatus,若返回MSStatus::kMSStatusSuccess则证明成功。

MSModelResize

MSStatus MSModelResize(MSModelHandle model, const MSTensorHandleArray inputs, MSShapeInfo* shape_infos,
                              size_t shape_info_num)

调整已编译模型的输入形状。

  • 参数

    • model: 指向模型对象的指针。

    • inputs: 模型输入对应的张量数组结构体。

    • shape_infos: 输入形状信息数组,按模型输入顺序排列的由形状信息组成的数组,模型会按顺序依次调整张量形状。

    • shape_info_num: 形状信息数组的长度。

  • 返回值

    枚举类型的状态码MSStatus,若返回MSStatus::kMSStatusSuccess则证明成功。

MSModelPredict

MSStatus MSModelPredict(MSModelHandle model, const MSTensorHandleArray inputs, MSTensorHandleArray* outputs,
                               const MSKernelCallBackC before, const MSKernelCallBackC after)

执行模型推理。

  • 参数

    • model: 指向模型对象的指针。

    • inputs: 模型输入对应的张量数组结构体。

    • outputs: 函数输出,模型输出对应的张量数组结构体的指针。

    • before: 模型推理前执行的回调函数。

    • after: 模型推理后执行的回调函数。

  • 返回值

    枚举类型的状态码MSStatus,若返回MSStatus::kMSStatusSuccess则证明成功。

MSModelRunStep

MSStatus MSModelRunStep(MSModelHandle model, const MSKernelCallBackC before, const MSKernelCallBackC after)

逐步运行模型,该选项仅对IoT有效。(该接口目前仅在Micro中使用)

  • 参数

    • model: 指向模型对象的指针。

    • before: 模型运行前执行的回调函数。

    • after: 模型运行后执行的回调函数。

  • 返回值

    枚举类型的状态码MSStatus,若返回MSStatus::kMSStatusSuccess则证明成功。

MSModelSetTrainMode

MSStatus MSModelSetTrainMode(const MSModelHandle model, bool train)

设置模型运行模式,该选项仅对IoT有效。(该接口目前仅在Micro中使用)

  • 参数

    • model: 指向模型对象的指针。

    • train: True表示模型在训练模式下运行,否则为推理模式。

  • 返回值

    枚举类型的状态码MSStatus,若返回MSStatus::kMSStatusSuccess则证明成功。

MSModelExportWeight

MSStatus MSModelExportWeight(const MSModelHandle model, const char* export_path)

将模型权重导出到二进制文件,该选项仅对IoT有效。(该接口目前仅在Micro中使用)

  • 参数

    • model: 指向模型对象的指针。

    • export_path: 导出权重文件的路径。

  • 返回值

    枚举类型的状态码MSStatus,若返回MSStatus::kMSStatusSuccess则证明成功。

MSModelGetInputs

MSTensorHandleArray MSModelGetInputs(const MSModelHandle model)

获取模型的输入张量数组结构体。

  • 参数

    • model: 指向模型对象的指针。

  • 返回值

    模型输入对应的张量数组结构体。

MSModelGetOutputs

MSTensorHandleArray MSModelGetOutputs(const MSModelHandle model)

获取模型的输出张量数组结构体。

  • 参数

    • model: 指向模型对象的指针。

  • 返回值

    模型输出对应的张量数组结构体。

MSModelGetInputByTensorName

MSTensorHandle MSModelGetInputByTensorName(const MSModelHandle model,
                                            const char* tensor_name)

通过张量名获取模型的输入张量。

  • 参数

    • model: 指向模型对象的指针。

    • tensor_name: 张量名称。

  • 返回值

    tensor_name所对应的输入张量的张量指针,如果输出中没有该张量则返回空。

MSModelGetOutputByTensorName

MSTensorHandle MSModelGetOutputByTensorName(const MSModelHandle model,
                                            const char* tensor_name)

通过张量名获取MindSpore模型的输出张量。

  • 参数

    • model: 指向模型对象的指针。

    • tensor_name: 张量名。

  • 返回值

    tensor_name所对应的张量指针。

公有数据类型

MSModelHandle

typedef void* MSModelHandle;

模型对象指针。

MSTensorHandleArray

typedef struct MSTensorHandleArray {
  size_t handle_num;
  MSTensorHandle* handle_list;
} MSTensorHandleArray;

张量数组结构体

  • 成员变量

    • handle_num: 张量数组长度。

    • handle_list: 张量数组。

MSShapeInfo

#define MS_MAX_SHAPE_NUM 32
typedef struct MSShapeInfo {
  size_t shape_num;
  int64_t shape[MS_MAX_SHAPE_NUM];
} MSShapeInfo;

维度信息结构体,最大支持的维度为MS_MAX_SHAPE_NUM

  • 成员变量

    • shape_num: 维度数组长度。

    • shape: 维度数组。

MSCallBackParamC

typedef struct MSCallBackParamC {
  char* node_name;
  char* node_type;
} MSCallBackParamC;

回调函数中存储的算子信息的参数。

  • 成员变量

    • node_name: 算子名称。

    • node_type: 算子类型。

MSKernelCallBackC

typedef bool (*MSKernelCallBackC)(const MSTensorHandleArray inputs,
                                  const MSTensorHandleArray outputs,
                                  const MSCallBackParamC kernel_Info);

回调函数指针类型。该函数指针是用于MSModelPredict接口,是在算子执行前或执行后运行的回调函数。