From e89dbb7966bfba970a7046c90b3664bbea4219cd Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EC=9C=A4=ED=98=84=EC=8B=9D/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Principal=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Fri, 9 Nov 2018 11:19:28 +0900 Subject: [PATCH] [enco/frontend] GraphBuilder for tflite op and factory (#2171) This commit introduces GraphBuilder, and its child classes and factory. Signed-off-by: Hyun Sik Yoon --- contrib/enco/frontend/tflite/src/Frontend.cpp | 44 +++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/contrib/enco/frontend/tflite/src/Frontend.cpp b/contrib/enco/frontend/tflite/src/Frontend.cpp index af14636..7c31d15 100644 --- a/contrib/enco/frontend/tflite/src/Frontend.cpp +++ b/contrib/enco/frontend/tflite/src/Frontend.cpp @@ -60,6 +60,50 @@ tensor::Shape as_tensor_shape(const flatbuffers::Vector *shape) return res; } +/** + * @brief Class to store context to build IR from tflite + */ +class GraphBuilderContext +{ + // TODO define later. + // This will have pointers to coco::Module, coco::data, etc. +}; + +/** + * @brief Parent class of tflite operation graph builders (e.g., Conv2DGraphBuilder) + */ +class GraphBuilder +{ +public: + virtual void build(const tflite::Operator *op, GraphBuilderContext *) const = 0; + virtual ~GraphBuilder() {} +}; + +/** + * @brief Class to return graph builder for passed tflite::builtinOperator + */ +class GraphBuilderRegistry +{ +public: + const GraphBuilder &lookup(tflite::BuiltinOperator op) const { return *(_builder_map.at(op)); } + + static GraphBuilderRegistry &get() + { + static GraphBuilderRegistry me; + return me; + } + +private: + GraphBuilderRegistry() + { + // add GraphBuilder for each tflite operation. For example, + // _builder_map[tflite::BuiltinOperator_CONV_2D] = make_unique()); + } + +private: + std::map> _builder_map; +}; + } // namespace tflimport Frontend::Frontend(std::unique_ptr &&raw) : _raw{std::move(raw)} -- 2.7.4