diff options
Diffstat (limited to 'tools/nnapi_quickcheck/tests/avg_pool_quan_1.cpp')
-rw-r--r-- | tools/nnapi_quickcheck/tests/avg_pool_quan_1.cpp | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/tools/nnapi_quickcheck/tests/avg_pool_quan_1.cpp b/tools/nnapi_quickcheck/tests/avg_pool_quan_1.cpp deleted file mode 100644 index 86f35f76d..000000000 --- a/tools/nnapi_quickcheck/tests/avg_pool_quan_1.cpp +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * 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. - */ - -#include "gtest/gtest.h" - -#include "tflite/ext/kernels/register.h" -#include "tensorflow/lite/model.h" -#include "tensorflow/lite/builtin_op_data.h" - -#include "env.h" -#include "memory.h" -#include "misc/environment.h" - -#include "tflite/Diff.h" -#include "tflite/Quantization.h" -#include "tflite/interp/FunctionBuilder.h" - -#include <chrono> -#include <iostream> - -using namespace tflite; -using namespace nnfw::tflite; - -TEST(NNAPI_Quickcheck_avg_pool_1, simple_test) -{ - // Set random seed - int SEED = std::chrono::system_clock::now().time_since_epoch().count(); - - nnfw::misc::env::IntAccessor("SEED").access(SEED); - - // Set random test parameters - int verbose = 0; - int tolerance = 1; - - nnfw::misc::env::IntAccessor("VERBOSE").access(verbose); - nnfw::misc::env::IntAccessor("TOLERANCE").access(tolerance); - -#define INT_VALUE(NAME, VALUE) IntVar NAME##_Value(#NAME, VALUE); -#include "avg_pool_quan_1.lst" -#undef INT_VALUE - - const int32_t IFM_C = IFM_C_Value(); - const int32_t IFM_H = IFM_H_Value(); - const int32_t IFM_W = IFM_W_Value(); - - const int32_t KER_H = KER_H_Value(); - const int32_t KER_W = KER_W_Value(); - - const int32_t OFM_C = IFM_C; - const int32_t OFM_H = (IFM_H - KER_H) + 1; - const int32_t OFM_W = (IFM_W - KER_W) + 1; - - std::cout << "Configurations:" << std::endl; -#define PRINT_NEWLINE() \ - { \ - std::cout << std::endl; \ - } -#define PRINT_VALUE(value) \ - { \ - std::cout << " " << #value << ": " << (value) << std::endl; \ - } - PRINT_VALUE(SEED); - PRINT_NEWLINE(); - - PRINT_VALUE(IFM_C); - PRINT_VALUE(IFM_H); - PRINT_VALUE(IFM_W); - PRINT_NEWLINE(); - - PRINT_VALUE(KER_H); - PRINT_VALUE(KER_W); - PRINT_NEWLINE(); - - PRINT_VALUE(OFM_C); - PRINT_VALUE(OFM_H); - PRINT_VALUE(OFM_W); -#undef PRINT_VALUE -#undef PRINT_NEWLINE - - auto setup = [&](Interpreter &interp) { - // Comment from 'context.h' - // - // Parameters for asymmetric quantization. Quantized values can be converted - // back to float using: - // real_value = scale * (quantized_value - zero_point); - // - // Q: Is this necessary? - TfLiteQuantizationParams quantization; - quantization.scale = 1.0f; - quantization.zero_point = 0; - - // On AddTensors(N) call, T/F Lite interpreter creates N tensors whose index is [0 ~ N) - interp.AddTensors(2); - - // Configure OFM - interp.SetTensorParametersReadWrite(0, kTfLiteUInt8 /* type */, "output" /* name */, - {1 /*N*/, OFM_H, OFM_W, OFM_C} /* dims */, quantization); - - // Configure IFM - interp.SetTensorParametersReadWrite(1, kTfLiteUInt8 /* type */, "input" /* name */, - {1 /*N*/, IFM_H, IFM_W, IFM_C} /* dims */, quantization); - - // Add Max Pooling Node - // - // NOTE AddNodeWithParameters take the ownership of param, and deallocate it with free - // So, param should be allocated with malloc - auto param = make_alloc<TfLitePoolParams>(); - - param->padding = kTfLitePaddingValid; - param->stride_width = 1; - param->stride_height = 1; - param->filter_width = KER_W; - param->filter_height = KER_H; - param->activation = kTfLiteActNone; - - // Run Convolution and store its result into Tensor #0 - // - Read IFM from Tensor #1 - interp.AddNodeWithParameters({1}, {0}, nullptr, 0, reinterpret_cast<void *>(param), - BuiltinOpResolver().FindOp(BuiltinOperator_AVERAGE_POOL_2D, 1)); - - // Set Tensor #1 as Input #0, and Tensor #0 as Output #0 - interp.SetInputs({1}); - interp.SetOutputs({0}); - }; - - const nnfw::tflite::FunctionBuilder builder(setup); - - RandomTestParam param; - - param.verbose = verbose; - param.tolerance = tolerance; - - int res = RandomTestRunner{SEED, param}.run(builder); - - EXPECT_EQ(res, 0); -} |