// // CPUQuantizedSoftmax.hpp // MNN // // Created by MNN on 2018/09/29. // Copyright © 2018, Alibaba Group Holding Limited // #ifndef CPUQuantizedSoftmax_hpp #define CPUQuantizedSoftmax_hpp #include "core/Execution.hpp" namespace MNN { template class CPUQuantizedSoftmax : public Execution { public: CPUQuantizedSoftmax(Backend *backend, const Op *op); virtual ~CPUQuantizedSoftmax() = default; virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; void QuantizedSoftmax(const uint8_t *inputData, const std::vector &inputDims, int32_t inputBetaMultiplier, int32_t inputBetaLeftShift, uint8_t *output_data, const std::vector &outputDims); private: int32_t mInputMultiplier; int mInputLeftShift; int mDiffMin; float mBeta; float mInputScale; std::vector mInputDims; std::vector mOutputDims; }; } // namespace MNN #endif /* CPUQuantizedSoftmax_hpp */