Daniel Konegen / MNIST_example

Dependencies:   mbed-os

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers activation_utils.h Source File

activation_utils.h

00001 /* Copyright 2019 The TensorFlow Authors. All Rights Reserved.
00002 
00003 Licensed under the Apache License, Version 2.0 (the "License");
00004 you may not use this file except in compliance with the License.
00005 You may obtain a copy of the License at
00006 
00007     http://www.apache.org/licenses/LICENSE-2.0
00008 
00009 Unless required by applicable law or agreed to in writing, software
00010 distributed under the License is distributed on an "AS IS" BASIS,
00011 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00012 See the License for the specific language governing permissions and
00013 limitations under the License.
00014 ==============================================================================*/
00015 
00016 #ifndef TENSORFLOW_LITE_EXPERIMENTAL_MICRO_KERNELS_ACTIVATION_UTILS_H_
00017 #define TENSORFLOW_LITE_EXPERIMENTAL_MICRO_KERNELS_ACTIVATION_UTILS_H_
00018 
00019 #include <algorithm>
00020 #include <cmath>
00021 #include <cstdlib>
00022 
00023 #include "tensorflow/lite/c/builtin_op_data.h"
00024 
00025 namespace tflite {
00026 namespace ops {
00027 namespace micro {
00028 
00029 // Returns the floating point value for a fused activation:
00030 inline float ActivationValFloat(TfLiteFusedActivation act, float a) {
00031   switch (act) {
00032     case kTfLiteActNone:
00033       return a;
00034     case kTfLiteActRelu:
00035       return a < 0.f ? 0.f : a;
00036     case kTfLiteActRelu1:
00037       return a < 0.f ? 0.f : ((a > 1.f) ? 1.f : a);
00038     case kTfLiteActRelu6:
00039       return a < 0.f ? 0.f : ((a > 6.f) ? 6.f : a);
00040     case kTfLiteActTanh:
00041       return (expf(a) - expf(-a)) / (expf(a) + expf(-a));
00042     case kTfLiteActSignBit:
00043       return signbit(a);
00044     case kTfLiteActSigmoid:
00045       return 1.f / (1.f + expf(-a));
00046     default:
00047       return a;
00048   }
00049 }
00050 
00051 }  // namespace micro
00052 }  // namespace ops
00053 }  // namespace tflite
00054 
00055 #endif  // TENSORFLOW_LITE_EXPERIMENTAL_MICRO_KERNELS_ACTIVATION_UTILS_H_