diff options
author | Chunseok Lee <chunseok.lee@samsung.com> | 2018-05-04 17:57:16 +0900 |
---|---|---|
committer | Chunseok Lee <chunseok.lee@samsung.com> | 2018-05-04 17:57:16 +0900 |
commit | 07659ccd9fe7b1cf1547cc6cad78bcf489f0a361 (patch) | |
tree | cf3a123812b7f1ad8b50d7d0ace891e0c03c6110 /runtimes/nn/common/include/ActivationFunctor.h | |
parent | da6f7a3e8360a49fd073a6e0031a4da134d9d984 (diff) | |
download | nnfw-07659ccd9fe7b1cf1547cc6cad78bcf489f0a361.tar.gz nnfw-07659ccd9fe7b1cf1547cc6cad78bcf489f0a361.tar.bz2 nnfw-07659ccd9fe7b1cf1547cc6cad78bcf489f0a361.zip |
Imported Upstream version 0.1upstream/0.1submit/tizen/20180504.091146
Diffstat (limited to 'runtimes/nn/common/include/ActivationFunctor.h')
-rw-r--r-- | runtimes/nn/common/include/ActivationFunctor.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/runtimes/nn/common/include/ActivationFunctor.h b/runtimes/nn/common/include/ActivationFunctor.h new file mode 100644 index 000000000..788962e4c --- /dev/null +++ b/runtimes/nn/common/include/ActivationFunctor.h @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __NNFW_RT_ACTIVATION_FUNCTOR_H__ +#define __NNFW_RT_ACTIVATION_FUNCTOR_H__ + +#if 0 // REF-ANN +#include "android/log.h" +#endif + +#include <algorithm> +#include <cmath> +#include <vector> +#include <cstdint> + +enum ActivationFn { + kActivationNone = 0, + kActivationRelu, + kActivationRelu1, + kActivationRelu6, + kActivationTanh, + kActivationSignBit, + kActivationSigmoid, +}; + +class ActivationFunctor { + public: + explicit ActivationFunctor(ActivationFn act) : act_(act) {} + + float operator()(float a) const { + switch (act_) { + case kActivationNone: + return a; + case kActivationRelu: + return a < 0.f ? 0.f : a; + case kActivationRelu6: + return std::max(0.f, std::min(a, 6.f)); + case kActivationTanh: + return std::tanh(a); + case kActivationSigmoid: + return 1.0f / (1.0f + std::exp(-a)); + default: +#if 0 // REF-ANN + __android_log_print(ANDROID_LOG_ERROR, "NN API", + "Invalid enum value for activation function: 0x%0X", + act_); +#endif + exit(1); + } + } + + private: + ActivationFn act_; +}; + +#endif // __NNFW_RT_ACTIVATION_FUNCTOR_H__ |