model_c

查看源文件

#include<model_c.h>

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

公有函数和数据类型

function

MSStatus MSExportModel(MSModelHandle model, MSModelType model_type, const char *model_file,MSQuantizationType quantization_type, bool export_inference_only,char **output_tensor_name, size_t num)

MSStatus MSExportModelBuffer(MSModelHandle model, MSModelType model_type, char **model_data, size_t *data_size,MSQuantizationType quantization_type, bool export_inference_only,char **output_tensor_name, size_t num)

MSStatus MSExportWeightsCollaborateWithMicro(MSModelHandle model, MSModelType model_type,const char *weight_file, bool is_inference, bool enable_fp16,char **changeable_weights_name, size_t num)

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)

size_t MSModelCalcWorkspaceSize(MSModelHandle model)

MSModelHandle MSModelCreate()

void MSModelDestroy(MSModelHandle* model)

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

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

MSTensorHandleArray MSModelGetInputs(const MSModelHandle model)

float MSModelGetLearningRate(MSModelHandle model)

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

MSTensorHandleArray MSModelGetOutputs(const MSModelHandle model)

bool MSModelGetTrainMode(MSModelHandle model)

MSTensorHandleArray MSModelGetWeights(MSModelHandle model)

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

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

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

MSStatus MSModelSetLearningRate(MSModelHandle model, float learning_rate)

MSStatus MSModelSetTrainMode(const MSModelHandle model, bool train)

MSStatus MSModelSetTrainMode(MSModelHandle model, bool train)

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

MSStatus MSModelSetupVirtualBatch(MSModelHandle model, int virtual_batch_multiplier, float lr, float momentum)

MSStatus MSModelUpdateWeights(MSModelHandle model, const MSTensorHandleArray new_weights)

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

MSTrainCfgHandle MSTrainCfgCreate()

void MSTrainCfgDestroy(MSTrainCfgHandle *train_cfg)

char **MSTrainCfgGetLossName(MSTrainCfgHandle train_cfg, size_t *num)

MSOptimizationLevel MSTrainCfgGetOptimizationLevel(MSTrainCfgHandle train_cfg)

void MSTrainCfgSetLossName(MSTrainCfgHandle train_cfg, const char **loss_name, size_t num)

void MSTrainCfgSetOptimizationLevel(MSTrainCfgHandle train_cfg, MSOptimizationLevel level)

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

MSStatus MSTrainModelBuildFromFile(MSModelHandle model, const char *model_path, MSModelType model_type,const MSContextHandle model_context, const MSTrainCfgHandle train_cfg)

定义

MS_MAX_SHAPE_NUM

#define MS_MAX_SHAPE_NUM 32

MSTensor最大支持的维度为MS_MAX_SHAPE_NUM

公有函数

MSExportModel

MSStatus MSExportModel(MSModelHandle model, MSModelType model_type, const char *model_file,
                              MSQuantizationType quantization_type, bool export_inference_only,
                              char **output_tensor_name, size_t num)

导出训练模型,仅在训练时有效。

  • 参数

    • mode: 模型对象句柄。

    • model_type: 模型文件类型。

    • model_file: 模型路径。

    • quantization_type: 模型量化类型。

    • export_inference_only: 是否仅导出推理模型。

    • output_tensor_name: 用于设置导出推理模型的输出张量名称,默认为空,此时导出完整推理模型。

    • num: 输出张量名称数量。

  • 返回值

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

MSExportModelBuffer

MSStatus MSExportModelBuffer(MSModelHandle model, MSModelType model_type, char **model_data, size_t *data_size,
                                    MSQuantizationType quantization_type, bool export_inference_only,
                                    char **output_tensor_name, size_t num)

从内存缓存导出训练模型,仅在训练时有效。

  • 参数

    • mode: 模型对象句柄。

    • model_type: 模型文件类型。

    • model_data: 模型的缓存数据。

    • data_size: 导出模型的缓存大小。

    • quantization_type: 模型量化类型。

    • export_inference_only: 是否仅导出推理模型。

    • output_tensor_name: 用于设置导出推理模型的输出张量名称,默认为空,此时导出完整推理模型。

    • num: 输出张量名称数量。

  • 返回值

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

MSExportWeightsCollaborateWithMicro

MSStatus MSExportWeightsCollaborateWithMicro(MSModelHandle model, MSModelType model_type,
                                                    const char *weight_file, bool is_inference, bool enable_fp16,
                                                    char **changeable_weights_name, size_t num)

导出训练模型权重,仅在端侧micro训练时有效。

  • 参数

    • mode: 模型对象句柄。

    • model_type: 模型文件类型。

    • weight_file: 导出权重文件路径。

    • is_inference: 是否从推理图模型导出权重,当前仅支持设置为true

    • enable_fp16: 浮点权重是否以float16格式保存。

    • changeable_weights_name: 设置可动态改变形状的权重张量名称。

    • num: 可变权重张量名称的数量。

  • 返回值

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

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则证明成功。

MSModelCalcWorkspaceSize

size_t MSModelCalcWorkspaceSize(MSModelHandle model)

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

  • 参数

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

MSModelCreate

MSModelHandle MSModelCreate()

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

  • 返回值

    模型对象指针。

MSModelDestroy

void MSModelDestroy(MSModelHandle* model)

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

  • 参数

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

MSModelExportWeight

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

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

  • 参数

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

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

  • 返回值

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

MSModelGetInputByTensorName

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

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

  • 参数

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

    • tensor_name: 张量名称。

  • 返回值

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

MSModelGetInputs

MSTensorHandleArray MSModelGetInputs(const MSModelHandle model)

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

  • 参数

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

  • 返回值

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

MSModelGetLearningRate

float MSModelGetLearningRate(MSModelHandle model)

获取模型学习率,仅适用于轻量训练。

  • 参数

    • mode: 模型对象句柄。

  • 返回值

    模型学习率。

MSModelGetOutputByTensorName

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

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

  • 参数

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

    • tensor_name: 张量名。

  • 返回值

    tensor_name所对应的张量指针。

MSModelGetOutputs

MSTensorHandleArray MSModelGetOutputs(const MSModelHandle model)

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

  • 参数

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

  • 返回值

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

MSModelGetTrainMode

bool MSModelGetTrainMode(MSModelHandle model)

获得模型是否为训练模式。

  • 参数

    • mode: 模型对象句柄。

  • 返回值

    bool值,是否为训练模型。

MSModelGetWeights

MSTensorHandleArray MSModelGetWeights(MSModelHandle model)

获取模型所有权重组成的tensor数组,仅适用于轻量训练。

  • 参数

    • mode: 模型对象句柄。

  • 返回值

    模型所有权重组成的tensor数组句柄。

MSModelPredict

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

执行模型推理。

  • 参数

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

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

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

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

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

  • 返回值

    枚举类型的状态码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则证明成功。

MSModelRunStep

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

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

  • 参数

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

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

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

  • 返回值

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

MSModelSetLearningRate

MSStatus MSModelSetLearningRate(MSModelHandle model, float learning_rate)

设置模型学习率,仅适用于轻量训练。

  • 参数

    • mode: 模型对象句柄。

    • learning_rate: 设置的模型学习率。

  • 返回值

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

MSModelSetTrainMode

MSStatus MSModelSetTrainMode(const MSModelHandle model, bool train)

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

  • 参数

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

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

  • 返回值

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

MSModelSetTrainMode

MSStatus MSModelSetTrainMode(MSModelHandle model, bool train)

设置模型是否为训练。

  • 参数

    • mode: 模型对象句柄。

    • train: bool值,指定模型是否训练。

  • 返回值

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

MSModelSetWorkspace

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

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

  • 参数

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

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

    • workspace_size: 工作空间大小。

MSModelSetupVirtualBatch

MSStatus MSModelSetupVirtualBatch(MSModelHandle model, int virtual_batch_multiplier, float lr, float momentum)

配置虚拟批次训练,仅在训练时有效。

  • 参数

    • mode: 模型对象句柄。

    • virtual_batch_multiplier: 虚拟批次系数,若设为小于1的数值则禁用此功能。

    • lr: 虚拟批次训练使用的学习率,设为-1时采用内部默认配置。

    • momentum: 虚拟批次训练中BatchNorm层使用的动量参数,设为-1时采用内部默认配置。

  • 返回值

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

MSModelUpdateWeights

MSStatus MSModelUpdateWeights(MSModelHandle model, const MSTensorHandleArray new_weights)

更新模型所有权重,仅适用于轻量训练。

  • 参数

    • mode: 模型对象句柄。

    • new_weights: 需要更新的模型权重组成的tensor数组句柄。

  • 返回值

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

MSRunStep

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

单步模型训练,仅适用于训练。

  • 参数

    • mode: 模型对象句柄。

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

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

  • 返回值

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

MSTrainCfgCreate

MSTrainCfgHandle MSTrainCfgCreate()

创建一个训练配置对象,仅适用于训练。

  • 返回值

    训练配置对象句柄。

MSTrainCfgDestroy

void MSTrainCfgDestroy(MSTrainCfgHandle *train_cfg)

销毁一个TrainCfg对象,仅适用于训练。

  • 参数

    • train_cfg: 指向训练配置对象的指针。

MSTrainCfgGetLossName

char **MSTrainCfgGetLossName(MSTrainCfgHandle train_cfg, size_t *num)

获取训练配置中指定loss位置编号的loss名称,仅适用于训练。

  • 参数

    • train_cfg: 指向训练配置对象句柄。

    • num: 需要获得loss名称的位置编号。

  • 返回值

    loss名称。

MSTrainCfgGetOptimizationLevel

MSOptimizationLevel MSTrainCfgGetOptimizationLevel(MSTrainCfgHandle train_cfg)

用于从训练配置中获得优化级别,仅适用于训练。

  • 参数

    • train_cfg: 指向训练配置对象句柄。

  • 返回值

    训练优化级别的句柄。

MSTrainCfgSetLossName

void MSTrainCfgSetLossName(MSTrainCfgHandle train_cfg, const char **loss_name, size_t num)

用于指定训练配置中指定loss位置编号的loss名称,仅适用于训练。

  • 参数

    • train_cfg: 指向训练配置对象句柄。

    • loss_name: 用户需要定义loss的名称。

    • num: 用户需要定义loss的位置编号。

MSTrainCfgSetOptimizationLevel

void MSTrainCfgSetOptimizationLevel(MSTrainCfgHandle train_cfg, MSOptimizationLevel level)

用于指定训练配置中优化级别,仅适用于训练。

  • 参数

    • train_cfg: 指向训练配置对象句柄。

    • level: 训练优化级别对象句柄。

MSTrainModelBuild

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

从模型缓冲区构建可在设备上运行的训练模型,仅适用于训练。

  • 参数

    • mode: 模型对象句柄。

    • model_data: 模型文件读取的缓存。

    • data_size: 模型文件缓存的字节数。

    • model_type: 模型文件的类型。

    • model_context: 模型执行期间上下文。

    • train_cfg: 训练使用的配置。

  • 返回值

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

MSTrainModelBuildFromFile

MSStatus MSTrainModelBuildFromFile(MSModelHandle model, const char *model_path, MSModelType model_type,
                                          const MSContextHandle model_context, const MSTrainCfgHandle train_cfg)

从模型路径构建可在设备上运行的训练模型,仅适用于训练。

  • 参数

    • mode: 模型对象句柄。

    • model_path: 模型文件的存储路径。

    • model_type: 模型文件的类型。

    • model_context: 模型执行期间上下文。

    • train_cfg: 训练使用的配置。

  • 返回值

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

公有数据类型

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接口,是在算子执行前或执行后运行的回调函数。

MSModelHandle

typedef void* MSModelHandle;

模型对象指针。

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: 维度数组。

MSTensorHandleArray

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

张量数组结构体

  • 成员变量

    • handle_num: 张量数组长度。

    • handle_list: 张量数组。

MSTrainCfgHandle

typedef void* MSTrainCfgHandle;

模型训练配置对象指针。