From e1d97503db8ddcc19eb4b3f7d3359fef89627466 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=84=B8=ED=9D=AC/On-Device=20Lab=28SR=29/Princip?= =?utf8?q?al=20Engineer/=EC=82=BC=EC=84=B1=EC=A0=84=EC=9E=90?= Date: Tue, 2 Jul 2019 12:05:56 +0900 Subject: [PATCH] [moco/tf] Introduce TFFusedBatchNorm IR (#4039) This will introduce TFFusedBatchNorm to import TensorFlow FusedBatchNorm node Signed-off-by: SaeHie Park --- contrib/moco-tf/src/Dialect/TFNodes.h | 2 +- contrib/moco-tf/src/Dialect/TFNodes.lst | 1 + contrib/moco-tf/src/IR/TFFusedBatchNorm.h | 58 +++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 contrib/moco-tf/src/IR/TFFusedBatchNorm.h diff --git a/contrib/moco-tf/src/Dialect/TFNodes.h b/contrib/moco-tf/src/Dialect/TFNodes.h index 5fa2830..5b7130c 100644 --- a/contrib/moco-tf/src/Dialect/TFNodes.h +++ b/contrib/moco-tf/src/Dialect/TFNodes.h @@ -17,6 +17,6 @@ #ifndef __MOCO_TF_DIALECT_TFNODES_H__ #define __MOCO_TF_DIALECT_TFNODES_H__ -// TODO add TF dialect IRs +#include "IR/TFFusedBatchNorm.h" #endif // __MOCO_TF_DIALECT_TFNODES_H__ diff --git a/contrib/moco-tf/src/Dialect/TFNodes.lst b/contrib/moco-tf/src/Dialect/TFNodes.lst index 4a8de56..dacaba7 100644 --- a/contrib/moco-tf/src/Dialect/TFNodes.lst +++ b/contrib/moco-tf/src/Dialect/TFNodes.lst @@ -7,3 +7,4 @@ // // TENSORFLOW_NODE(OPCODE, CLASS) +TENSORFLOW_NODE(FusedBatchNorm, TFFusedBatchNorm) diff --git a/contrib/moco-tf/src/IR/TFFusedBatchNorm.h b/contrib/moco-tf/src/IR/TFFusedBatchNorm.h new file mode 100644 index 0000000..6a9e0c5 --- /dev/null +++ b/contrib/moco-tf/src/IR/TFFusedBatchNorm.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2019 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. + */ + +#ifndef __MOCO_TF_IR_TFFUSEDBATCHNORM_H__ +#define __MOCO_TF_IR_TFFUSEDBATCHNORM_H__ + +#include "Dialect/TFNodeDecl.h" + +namespace moco +{ +namespace tf +{ + +class TFFusedBatchNorm final : public loco::FixedArityNode<5, TFNodeImpl> +{ +public: + TFFusedBatchNorm() = default; + +public: + Node *input(void) const { return at(0)->node(); } + void input(Node *node) { at(0)->node(node); } + + Node *gamma(void) const { return at(1)->node(); } + void gamma(Node *node) { at(1)->node(node); } + + Node *beta(void) const { return at(2)->node(); } + void beta(Node *node) { at(2)->node(node); } + + Node *mean(void) const { return at(3)->node(); } + void mean(Node *node) { at(3)->node(node); } + + Node *variance(void) const { return at(4)->node(); } + void variance(Node *node) { at(4)->node(node); } + + float epsilon(void) const { return _epsilon; } + void epsilon(float epsilon) { _epsilon = epsilon; } + +private: + float _epsilon = 0.001f; +}; + +} // namespace tf +} // namespace moco + +#endif // __MOCO_TF_IR_TFFUSEDBATCHNORM_H__ -- 2.7.4