Files
2026-07-13 13:33:03 +08:00

58 lines
1.7 KiB
C++

//
// QNNActivation.cpp
// MNN
//
// Created by MNN on b'2025/04/10'.
// Copyright © 2018, Alibaba Group Holding Limited
//
#include "QNNActivation.hpp"
namespace MNN {
namespace QNN {
#ifdef ENABLE_QNN_ONLINE_FINALIZE
ErrorCode QNNActivation::onEncode(const std::vector<Tensor *> &inputs, const std::vector<Tensor *> &outputs) {
auto opType = mOp->type();
switch (opType) {
case OpType_ReLU:
mNodeType = "Relu";
break;
case OpType_ReLU6:
mNodeType = "ReluMinMax";
this->createParamScalar("min_value", mOp->main_as_Relu6()->minValue());
this->createParamScalar("max_value", mOp->main_as_Relu6()->maxValue());
break;
case OpType_Sigmoid:
mNodeType = "Sigmoid";
break;
case OpType_ELU:
mNodeType = "Elu";
this->createParamScalar("alpha", mOp->main_as_ELU()->alpha());
break;
default:
MNN_QNN_NOT_SUPPORT_SPECIAL_CASE;
}
this->addNodeCommon(inputs, outputs);
return NO_ERROR;
}
class QNNActivationCreator : public QnnBackend::Creator {
public:
virtual QNNCommonExecution * onCreate(const std::vector<Tensor*>& inputs, const std::vector<Tensor*>& outputs, const MNN::Op* op,
Backend* backend) const override {
return new QNNActivation(backend, op);
}
};
REGISTER_QNN_OP_CREATOR(QNNActivationCreator, OpType_ReLU)
REGISTER_QNN_OP_CREATOR(QNNActivationCreator, OpType_ReLU6)
REGISTER_QNN_OP_CREATOR(QNNActivationCreator, OpType_Sigmoid)
REGISTER_QNN_OP_CREATOR(QNNActivationCreator, OpType_ELU)
#endif
} // end namespace QNN
} // end namespace MNN