数据结构
以下数据结构用于ONNX模型的操作:
OnnxTypeInfo
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
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标识 |