#ifndef CAFFE2_OPERATORS_HARD_SIGMOID_H_ #define CAFFE2_OPERATORS_HARD_SIGMOID_H_ #include #include "caffe2/operators/elementwise_ops.h" namespace caffe2 { template struct HardSigmoidFunctor { explicit HardSigmoidFunctor(OperatorBase& op) : alpha(op.GetSingleArgument("alpha", 0.2f)), beta(op.GetSingleArgument("beta", 0.5f)) {} template bool operator()(const int N, const T* X, T* Y, Context* context) const; const float alpha, beta; }; template struct HardSigmoidGradientFunctor { explicit HardSigmoidGradientFunctor(OperatorBase& op) : alpha(op.GetSingleArgument("alpha", 0.2f)) {} template bool Forward( const std::vector& Y_dims, const std::vector& dY_dims, const T* Y, const T* dY, T* dX, Context* context) const; const float alpha; }; } // namespace caffe2 #endif // CAFFE2CAFFE2_OPERATORS_HARD_SIGMOID_H_