2026-01-28 06:16:04 +00:00

112 lines
2.9 KiB
C++

//
// Created by xiangzhou on 11/9/23.
//
#pragma once
#include "C_Tensor.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef float (*ele_opfn)(const float x, float para1, float para2);
struct ElementUnaryOpAttribute{
const char* name_;
ele_opfn fn_;
float para1_;
float para2_;
};
typedef struct ElementUnaryOpAttribute ElementUnaryOpAttribute;
void ElementUnaryOperator_Run(const C_Tensors* inputs,
const C_Tensors* weights,
C_Tensors* outputs,
const ElementUnaryOpAttribute* p_attr);
// cast, dropout, flatten, identify, reshape, squeeze, unsqueeze,
float copy_fn(const float x, float , float );
float abs_fn(const float x, float , float ) ;
float cos_fn(const float x, float, float ) ;
float cosh_fn(const float x, float, float ) ;
float acos_fn(const float x, float , float );
float acosh_fn(const float x, float , float ) ;
float tan_fn(const float x, float , float ) ;
float tanh_fn(const float x, float , float ) ;
float atan_fn(const float x, float , float ) ;
float atanh_fn(const float x, float , float ) ;
float asin_fn(const float x, float , float ) ;
float asinh_fn(const float x, float , float ) ;
float bitwise_not_fn(const float x, float , float ) ;
float ceil_fn(const float x, float , float ) ;
float celu_fn(const float x, float alpha, float) ;
float clip_fn(const float x, float , float );
float elu_fn(const float x, float alpha, float);
float erf_fn(const float x, float, float );
float exp_fn(const float x, float, float );
float floor_fn(const float x, float, float );
float hardsigmoid_fn(const float x, float alpha, float beta);
float isinf_fn(const float x, float detect_positive, float detect_negative);
float isnan_fn(const float x, float, float );
float kneron_logexp_fn(const float x, float, float);
float kneron_pow2_fn(const float x, float, float);
float kneron_scale_fn(const float x, float scale, float bias);
float kneron_square_fn(const float x, float, float);
float kneron_swish_fn(const float x, float, float);
float kneron_hardswish_fn(const float x, float, float);
float kneron_log2_fn(const float x, float eps, float);
float leakyrelu_fn(const float x, float alpha, float );
float log_fn(const float x, float , float );
float neg_fn(const float x, float, float );
float not_fn(const float x, float, float);
float reciprocal_fn(const float x, float, float);
float relu_fn(const float x, float, float);
float selu_fn(const float x, float alpha, float gamma);
float sigmoid_fn(const float x, float, float);
float soft_sign_fn(const float x, float, float);
float shrink_fn(const float x, float bias, float lambd);
float soft_plus_fn(const float x, float, float);
float sqrt_fn(const float x, float, float);
float threshold_relu_fn(const float x, float alpha, float);
#ifdef __cplusplus
}
// C++ supplemental interfaces
template <typename T>
T copy_fn(const T x, float , float ) { return x;}
#endif