112 lines
2.9 KiB
C++
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
|