From: 윤현식/On-Device Lab(SR)/Principal Engineer/삼성전자 Date: Mon, 2 Sep 2019 22:30:59 +0000 (+0900) Subject: [exo-tflite] Introducing TFLMaxPool2D (#7087) X-Git-Tag: accepted/tizen/unified/20190903.052428~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f79bb15ce8b163927d0090c61515b81ba550e7e1;p=platform%2Fcore%2Fml%2Fnnfw.git [exo-tflite] Introducing TFLMaxPool2D (#7087) This adds TFLMaxPool2D into TFLDialect. Signed-off-by: Hyun Sik Yoon --- diff --git a/compiler/exo-tflite/src/Dialect/IR/TFLNodes.h b/compiler/exo-tflite/src/Dialect/IR/TFLNodes.h index 31184a9..e8fab4f 100644 --- a/compiler/exo-tflite/src/Dialect/IR/TFLNodes.h +++ b/compiler/exo-tflite/src/Dialect/IR/TFLNodes.h @@ -154,7 +154,37 @@ private: // TODO TFLDiv -// TODO TFLMaxPool2D +/** + * @brief MAX_POOL_2D in TensorFlow Lite + */ +class TFLMaxPool2D final : public FixedArityNode<1, TFLNodeImpl> +{ +public: + TFLMaxPool2D() + : _fused_act_fun(FusedActFunc::UNDEFINED), _padding(Padding::UNDEFINED) { /* empty */} + +public: + loco::Node *value(void) const { return at(0)->node(); } + void value(loco::Node *node) { at(0)->node(node); } + + FusedActFunc fusedActivationFunction() const { return _fused_act_fun; } + void fusedActivationFunction(FusedActFunc fused_act_fun) { _fused_act_fun = fused_act_fun; } + + Padding padding() const { return _padding; } + void padding(Padding padding) { _padding = padding; } + + const Filter *filter(void) const { return &_filter; } + Filter *filter(void) { return &_filter; } + + const Stride *stride(void) const { return &_stride; } + Stride *stride(void) { return &_stride; } + +private: + FusedActFunc _fused_act_fun; + Padding _padding; + Stride _stride; + Filter _filter; +}; // TODO TFLMul diff --git a/compiler/exo-tflite/src/Dialect/IR/TFLNodes.lst b/compiler/exo-tflite/src/Dialect/IR/TFLNodes.lst index 61c294e..4c9a527 100644 --- a/compiler/exo-tflite/src/Dialect/IR/TFLNodes.lst +++ b/compiler/exo-tflite/src/Dialect/IR/TFLNodes.lst @@ -11,7 +11,7 @@ TFL_NODE(AVERAGE_POOL_2D, locoex::TFLAveragePool2D) // TODO TFLConv2D // TODO TFLDepthwiseConv2D // TODO TFLDiv -// TODO TFLMaxPool2D +TFL_NODE(MAX_POOL_2D, locoex::TFLMaxPool2D) // TODO TFLMul TFL_NODE(RELU, locoex::TFLRelu) // TODO TFLRelu6 diff --git a/compiler/exo-tflite/src/TFLFormattedGraph.cpp b/compiler/exo-tflite/src/TFLFormattedGraph.cpp index cb0a6f3..7be3c2a 100644 --- a/compiler/exo-tflite/src/TFLFormattedGraph.cpp +++ b/compiler/exo-tflite/src/TFLFormattedGraph.cpp @@ -109,7 +109,13 @@ bool TFLNodeSummaryBuilder::summary(const locoex::TFLAveragePool2D *node, // TODO TFLDiv -// TODO TFLMaxPool2D +bool TFLNodeSummaryBuilder::summary(const locoex::TFLMaxPool2D *node, locop::NodeSummary &s) const +{ + s.opname("TFL.MAX_POOL_2D"); + s.args().append("input", tbl()->lookup(node->value())); + s.state(locop::NodeSummary::State::PartiallyKnown); + return true; +} // TODO TFLMul