数据结构

以下数据结构用于ONNX模型的操作:

OnnxTypeInfo

该结构描述了ONNX模型的输入输出参数的类型

struct OnnxTypeInfo

 {

  ENUM_ONNX_TYPE        type;          // 参数类型

  OnnxTensorTypeInfo    tensor;        // 张量描述

  OnnxMapTypeInfo       map;           // 映射描述

  OnnxSequenceTypeInfo  sequence;      // 序列描述

 };

只有张量(ONNX_TYPE_TENSOR)可以作为输入使用。在这种情况下,只有OnnxTypeInfo::tensor字段被填充值,而其他字段(映射和序列)没有定义。

三种OnnxTypeInfo类型(ONNX_TYPE_TENSOR、ONNX_TYPE_MAP或ONNX_TYPE_SEQUENCE)中只有一种可以作为输入使用。相对应的子结构(OnnxTypeInfo::tensor、OnnxTypeInfo::map或OnnxTypeInfo::sequence)根据类型来填充。

OnnxTensorTypeInfo

该结构描述了ONNX模型的输入输出参数中的张量

struct OnnxTensorTypeInfo

 {

  const ENUM_ONNX_DATA_TYPE  data_type;      // 张量中的数据类型

  const long                 dimensions[];   // 张量中的元素数

 };

OnnxMapTypeInfo

该结构描述了ONNX模型的输出参数中获得的映射

struct OnnxMapTypeInfo

 {

  const ENUM_ONNX_DATA_TYPE  key_type;      //密钥类型

  const OnnxTypeInfo&        value_type;    // 值类型

 };

OnnxSequenceTypeInfo

该结构描述了ONNX模型的输出参数中获得的序列

struct OnnxSequenceTypeInfo

 {

  const OnnxTypeInfo&        value_type;     // 序列中的数据类型

 };

 

 

ENUM_ONNX_TYPE

ENUM_ONNX_TYPE枚举描述了模型参数的类型

ID 描述
ONNX_TYPE_UNKNOWN 未知
ONNX_TYPE_TENSOR Tensor
ONNX_TYPE_SEQUENCE Sequence
ONNX_TYPE_MAP Map
ONNX_TYPE_OPAQUE Abstract (opaque)
ONNX_TYPE_SPARSETENSOR Sparse tensor

ENUM_ONNX_DATA_TYPE

ENUM_ONNX_DATA_TYPE枚举描述了所用数据的类型

ID 描述
ONNX_DATA_TYPE_UNDEFINED 未定义
ONNX_DATA_TYPE_FLOAT 浮点型
ONNX_DATA_TYPE_INT8 8位整型
ONNX_DATA_TYPE_UINT16 16位无符号整型
ONNX_DATA_TYPE_INT16 16位整型
ONNX_DATA_TYPE_INT32 32位整型
ONNX_DATA_TYPE_INT64 64位整型
ONNX_DATA_TYPE_STRING 字符串
ONNX_DATA_TYPE_BOOL 布尔型
ONNX_DATA_TYPE_FLOAT16 16位浮点型
ONNX_DATA_TYPE_DOUBLE 双精度
ONNX_DATA_TYPE_UINT32 32位无符号整型
ONNX_DATA_TYPE_UINT64 64位无符号整型
ONNX_DATA_TYPE_COMPLEX64 64位复数
ONNX_DATA_TYPE_COMPLEX128 128位复数
ONNX_DATA_TYPE_BFLOAT16 16位bfloat(大脑浮点)

ENUM_ONNX_FLAGS

ENUM_ONNX_FLAGS枚举描述了模型运行模式

ID 描述
ONNX_DEBUG_LOGS 输出调试日志
ONNX_NO_CONVERSION 禁用自动转换,按原样使用用户数据
ONNX_COMMON_FOLDER   加载Common\Files文件夹的模型文件;该值等于FILE_COMMON标识