Daniel Konegen / MNIST_example

Dependencies:   mbed-os

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers neg.cc Source File

neg.cc

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 #include "tensorflow/lite/kernels/internal/reference/neg.h"
00017 
00018 #include "tensorflow/lite/c/c_api_internal.h"
00019 #include "tensorflow/lite/kernels/internal/tensor_ctypes.h"
00020 #include "tensorflow/lite/kernels/kernel_util.h"
00021 
00022 namespace tflite {
00023 namespace ops {
00024 namespace micro {
00025 namespace neg {
00026 
00027 constexpr int kInputTensor = 0;
00028 constexpr int kOutputTensor = 0;
00029 
00030 TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) {
00031   const TfLiteTensor* input = GetInput(context, node, kInputTensor);
00032   TfLiteTensor* output = GetOutput(context, node, kOutputTensor);
00033   switch (input->type) {
00034     // TODO(wangtz): handle for kTfLiteInt8
00035     case kTfLiteFloat32:
00036       reference_ops::Negate(GetTensorShape(input), GetTensorData<float>(input),
00037                             GetTensorShape(output),
00038                             GetTensorData<float>(output));
00039       break;
00040     default:
00041       context->ReportError(
00042           context, "Neg only currently supports float32, got %d.", input->type);
00043       return kTfLiteError;
00044   }
00045   return kTfLiteOk;
00046 }
00047 
00048 }  // namespace neg
00049 
00050 TfLiteRegistration* Register_NEG() {
00051   static TfLiteRegistration r = {/*init=*/nullptr, /*free=*/nullptr,
00052                                  /*prepare=*/nullptr, neg::Eval};
00053   return &r;
00054 }
00055 
00056 }  // namespace micro
00057 }  // namespace ops
00058 }  // namespace tflite