From 7b5b6e6fb32ddf76aa806bd3e1090e6abfe5cab8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EC=9D=B4=ED=95=9C=EC=A2=85/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Engineer/=EC=82=BC=EC=84=B1=EC=A0=84?= =?utf8?q?=EC=9E=90?= Date: Thu, 10 May 2018 14:47:16 +0900 Subject: [PATCH] [tflite_run] Remove OutputTensorDumper/Loader (#1145) Remove old version and use TensorDumper/Loader instead. Signed-off-by: Hanjoung Lee --- tools/tflite_run/CMakeLists.txt | 2 - tools/tflite_run/src/output_tensor_dumper.cc | 28 ------------- tools/tflite_run/src/output_tensor_dumper.h | 26 ------------ tools/tflite_run/src/output_tensor_loader.cc | 60 ---------------------------- tools/tflite_run/src/output_tensor_loader.h | 35 ---------------- tools/tflite_run/src/tflite_run.cc | 8 ++-- 6 files changed, 4 insertions(+), 155 deletions(-) delete mode 100644 tools/tflite_run/src/output_tensor_dumper.cc delete mode 100644 tools/tflite_run/src/output_tensor_dumper.h delete mode 100644 tools/tflite_run/src/output_tensor_loader.cc delete mode 100644 tools/tflite_run/src/output_tensor_loader.h diff --git a/tools/tflite_run/CMakeLists.txt b/tools/tflite_run/CMakeLists.txt index 6603811..1d1b23b 100644 --- a/tools/tflite_run/CMakeLists.txt +++ b/tools/tflite_run/CMakeLists.txt @@ -2,8 +2,6 @@ list(APPEND TFLITE_RUN_SRCS "src/tflite_run.cc") list(APPEND TFLITE_RUN_SRCS "src/operators.cc") list(APPEND TFLITE_RUN_SRCS "src/bin_image.cc") list(APPEND TFLITE_RUN_SRCS "src/args.cc") -list(APPEND TFLITE_RUN_SRCS "src/output_tensor_dumper.cc") -list(APPEND TFLITE_RUN_SRCS "src/output_tensor_loader.cc") list(APPEND TFLITE_RUN_SRCS "src/tensor_dumper.cc") list(APPEND TFLITE_RUN_SRCS "src/tensor_loader.cc") diff --git a/tools/tflite_run/src/output_tensor_dumper.cc b/tools/tflite_run/src/output_tensor_dumper.cc deleted file mode 100644 index c0659d4..0000000 --- a/tools/tflite_run/src/output_tensor_dumper.cc +++ /dev/null @@ -1,28 +0,0 @@ -#include "output_tensor_dumper.h" - -#include -#include - -#include "tensorflow/contrib/lite/interpreter.h" - -namespace TFLiteRun -{ - -OutputTensorDumper::OutputTensorDumper(tflite::Interpreter &interpreter) : _interpreter(interpreter) -{ - // DO NOTHING -} - -void OutputTensorDumper::dump(const std::string &filename) const -{ - // TODO Handle file open/write error - std::ofstream file(filename, std::ios::out | std::ios::binary); - for (const auto &o : _interpreter.outputs()) - { - const TfLiteTensor *tensor = _interpreter.tensor(o); - file.write(tensor->data.raw, tensor->bytes); - } - file.close(); -} - -} // end of namespace TFLiteRun diff --git a/tools/tflite_run/src/output_tensor_dumper.h b/tools/tflite_run/src/output_tensor_dumper.h deleted file mode 100644 index 4fc6f92..0000000 --- a/tools/tflite_run/src/output_tensor_dumper.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef __TFLITE_RUN_OUTPUT_TENSOR_DUMPER_H__ -#define __TFLITE_RUN_OUTPUT_TENSOR_DUMPER_H__ - -#include - -namespace tflite -{ -class Interpreter; -} - -namespace TFLiteRun -{ - -class OutputTensorDumper -{ -public: - OutputTensorDumper(tflite::Interpreter &interpreter); - void dump(const std::string &filename) const; - -private: - tflite::Interpreter &_interpreter; -}; - -} // end of namespace TFLiteRun - -#endif // __TFLITE_RUN_OUTPUT_TENSOR_DUMPER_H__ diff --git a/tools/tflite_run/src/output_tensor_loader.cc b/tools/tflite_run/src/output_tensor_loader.cc deleted file mode 100644 index c7a62f0..0000000 --- a/tools/tflite_run/src/output_tensor_loader.cc +++ /dev/null @@ -1,60 +0,0 @@ -#include "output_tensor_loader.h" - -#include - -#include - -#include "util/tensor/Shape.h" - -namespace TFLiteRun -{ - -OutputTensorLoader::OutputTensorLoader(tflite::Interpreter &interpreter) - : _interpreter(interpreter), _raw_data(nullptr) -{ -} - -void OutputTensorLoader::load(const std::string &filename) -{ - // TODO Handle file open/read error - std::ifstream file(filename, std::ios::ate | std::ios::binary); - size_t file_size = file.tellg(); - file.seekg(0, std::ios::beg); - - _raw_data = std::unique_ptr(new float[file_size]); - file.read(reinterpret_cast(_raw_data.get()), file_size); - - size_t offset = 0; - for (const auto &o : _interpreter.outputs()) - { - const TfLiteTensor *tensor = _interpreter.tensor(o); - - // Convert tensor shape to `Shape` from `tensor->dims` - nnfw::util::tensor::Shape shape(static_cast(tensor->dims->size)); - for (int d = 0; d < tensor->dims->size; d++) - { - shape.dim(d) = tensor->dims->data[d]; - } - - float *base = _raw_data.get() + offset; - - assert(tensor->bytes % sizeof(float) == 0); - offset += (tensor->bytes / sizeof(float)); - - _tensor_map.insert(std::make_pair(o, nnfw::support::tflite::TensorView(shape, base))); - } - - // The file size and total output tensor size must match - assert(file_size == offset * sizeof(float)); - - file.close(); -} - -const nnfw::support::tflite::TensorView &OutputTensorLoader::get(int tensor_idx) const -{ - auto found = _tensor_map.find(tensor_idx); - assert(found != _tensor_map.end()); - return found->second; -} - -} // end of namespace TFLiteRun diff --git a/tools/tflite_run/src/output_tensor_loader.h b/tools/tflite_run/src/output_tensor_loader.h deleted file mode 100644 index 3c4b9f1..0000000 --- a/tools/tflite_run/src/output_tensor_loader.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef __TFLITE_RUN_OUTPUT_TENSOR_LOADER_H__ -#define __TFLITE_RUN_OUTPUT_TENSOR_LOADER_H__ - -#include - -#include -#include - -#include "support/tflite/TensorView.h" - -namespace tflite -{ -class Interpreter; -} - -namespace TFLiteRun -{ - -class OutputTensorLoader -{ -public: - OutputTensorLoader(tflite::Interpreter &interpreter); - void load(const std::string &filename); - const nnfw::support::tflite::TensorView &get(int tensor_idx) const; - size_t getNumOutputs() const { return _tensor_map.size(); } - -private: - tflite::Interpreter &_interpreter; - std::unique_ptr _raw_data; - std::unordered_map> _tensor_map; -}; - -} // end of namespace TFLiteRun - -#endif // __TFLITE_RUN_OUTPUT_TENSOR_LOADER_H__ diff --git a/tools/tflite_run/src/tflite_run.cc b/tools/tflite_run/src/tflite_run.cc index 2743e47..ae4189f 100644 --- a/tools/tflite_run/src/tflite_run.cc +++ b/tools/tflite_run/src/tflite_run.cc @@ -20,8 +20,8 @@ #include "operators.h" #include "bin_image.h" #include "args.h" -#include "output_tensor_dumper.h" -#include "output_tensor_loader.h" +#include "tensor_dumper.h" +#include "tensor_loader.h" #include "util/environment.h" #include "util/fp32.h" #include "support/tflite/Diff.h" @@ -191,7 +191,7 @@ int main(const int argc, char **argv) if (!args.getDumpFilename().empty()) { const std::string &dump_filename = args.getDumpFilename(); - TFLiteRun::OutputTensorDumper output_dumper(*interpreter); + TFLiteRun::TensorDumper output_dumper(*interpreter); output_dumper.dump(dump_filename); std::cout << "Output tensors have been dumped to file \"" << dump_filename << "\"." << std::endl; @@ -204,7 +204,7 @@ int main(const int argc, char **argv) std::cout << "Comparing the results with \"" << compare_filename << "\"." << std::endl; std::cout << "========================================" << std::endl; - TFLiteRun::OutputTensorLoader output_loader(*interpreter); + TFLiteRun::TensorLoader output_loader(*interpreter); output_loader.load(compare_filename); // TODO Code duplication (copied from RandomTestRunner) -- 2.7.4