add onnx pack
This commit is contained in:
95
components/ai/onnx/operator_int/onnx.h
Normal file
95
components/ai/onnx/operator_int/onnx.h
Normal file
@@ -0,0 +1,95 @@
|
||||
#ifndef __ONNX_H__
|
||||
#define __ONNX_H__
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
//#include <int.h>
|
||||
#include <math.h>
|
||||
|
||||
#include <onnx-parser.h>
|
||||
|
||||
#define ONNX_USE_NWHC
|
||||
|
||||
#ifdef ONNX_USE_NWHC
|
||||
// NWHC
|
||||
#define W_INDEX 0
|
||||
#define H_INDEX 1
|
||||
#define C_INDEX 2
|
||||
#else
|
||||
// NCWH
|
||||
#define C_INDEX 0
|
||||
#define W_INDEX 1
|
||||
#define H_INDEX 2
|
||||
#endif
|
||||
|
||||
// Model
|
||||
void onnx_tensor_info(const int* A, int64_t* shape, int64_t dim);
|
||||
int* onnx_model_run(Onnx__ModelProto* model, int* input, int64_t* shapeInput);
|
||||
|
||||
// Layers
|
||||
int* conv2D_layer(Onnx__GraphProto* graph, const int *input, int64_t* shapeInput, int64_t* shapeOutput, const char* layer_name);
|
||||
int* relu_layer(Onnx__GraphProto* graph, const int *input, int64_t* shapeInput, int64_t* shapeOutput, const char* layer_name);
|
||||
int* maxpool_layer(Onnx__GraphProto* graph, int* input, int64_t* shapeInput, int64_t* shapeOutput, const char* layer_name);
|
||||
int* matmul_layer(Onnx__GraphProto* graph, const int *input, int64_t* shapeInput, int64_t* shapeOutput, const char* layer_name);
|
||||
int* add_layer(Onnx__GraphProto* graph, const int *input, int64_t* shapeInput, int64_t* shapeOutput, const char* layer_name);
|
||||
int* softmax_layer(Onnx__GraphProto* graph, const int *input, int64_t* shapeInput, int64_t* shapeOutput, const char* layer_name);
|
||||
|
||||
// Operators
|
||||
int* transpose(const int* A, int64_t* shape, int64_t dim, int64_t* perm);
|
||||
|
||||
void conv2D(const int *input, // input image
|
||||
const uint16_t dim_im_in_x, // input image dimention x
|
||||
const uint16_t dim_im_in_y, // input image dimention y
|
||||
const uint16_t ch_im_in, // number of input image channels
|
||||
const int *weight, // kernel weights
|
||||
const uint16_t ch_im_out, // number of filters, i.e., output image channels
|
||||
const uint16_t dim_kernel_x, // filter kernel size x
|
||||
const uint16_t dim_kernel_y, // filter kernel size y
|
||||
const uint16_t padding_x, // padding sizes x
|
||||
const uint16_t padding_y, // padding sizes y
|
||||
const uint16_t stride_x, // stride x
|
||||
const uint16_t stride_y, // stride y
|
||||
const int *bias, // bias
|
||||
int *output, // output image
|
||||
const uint16_t dim_im_out_x, // output image dimension x
|
||||
const uint16_t dim_im_out_y // output image dimension y
|
||||
);
|
||||
|
||||
void relu(const int *input, uint32_t size, int* output);
|
||||
|
||||
void maxpool(const int *input,
|
||||
const uint16_t dim_im_in_x, // input image dimension x or W
|
||||
const uint16_t dim_im_in_y, // input image dimension y or H
|
||||
const uint16_t ch_im_in, // number of input image channels
|
||||
const uint16_t dim_kernel_x, // window kernel size
|
||||
const uint16_t dim_kernel_y, // window kernel size
|
||||
const uint16_t padding_x, // padding sizes
|
||||
const uint16_t padding_y, // padding sizes
|
||||
const uint16_t stride_x, // stride
|
||||
const uint16_t stride_y, // stride
|
||||
const uint16_t dim_im_out_x, // output image dimension x or W
|
||||
const uint16_t dim_im_out_y, // output image dimension y or H
|
||||
int *output);
|
||||
|
||||
void matmul(const int *input, // pointer to vector
|
||||
const int *weight, // pointer to matrix
|
||||
const uint16_t dim_vec, // length of the vector
|
||||
const uint16_t num_of_rows, // numCol of A
|
||||
int *output);
|
||||
|
||||
void add(const int *input, // pointer to vector
|
||||
const int *bias, // pointer to matrix
|
||||
const uint16_t dim_vec, // length of the vector
|
||||
int *output);
|
||||
|
||||
void dense(const int *input, // pointer to vector
|
||||
const int *weight, // pointer to matrix
|
||||
const uint16_t dim_vec, // length of the vector
|
||||
const uint16_t num_of_rows, // numCol of A
|
||||
const int *bias,
|
||||
int *output);
|
||||
|
||||
void softmax(const int *input, const uint32_t dim_vec, int *output);
|
||||
|
||||
#endif // __ONNX_H__
|
Reference in New Issue
Block a user