From df6b25d03aebbd670c6dbf18781ea04ead03640b Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=A2=85=ED=98=84/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Staff=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Fri, 2 Nov 2018 15:59:24 +0900 Subject: [PATCH] [enco.caffe] Remove LoadOpBuilder (#2105) This commit removes LoadOpBuilder, and rewrites relavent code using OpBuilder. Signed-off-by: Jonghyun Park --- contrib/enco/frontend/caffe/src/Frontend.cpp | 52 +++++----------------------- 1 file changed, 8 insertions(+), 44 deletions(-) diff --git a/contrib/enco/frontend/caffe/src/Frontend.cpp b/contrib/enco/frontend/caffe/src/Frontend.cpp index 17ab23c..a86493f 100644 --- a/contrib/enco/frontend/caffe/src/Frontend.cpp +++ b/contrib/enco/frontend/caffe/src/Frontend.cpp @@ -84,44 +84,6 @@ tensor::Shape as_tensor_shape(const ::caffe::BlobProto *blob_proto) namespace { -/** - * @brief A LoadOpBuilder is a helper class for build_load functions - * - * API Usage: - * - * auto load = build_load(m).with(object); - */ -class LoadOpBuilder -{ -public: - friend LoadOpBuilder build_load(coco::Module *m); - -private: - // NOTE Only 'build_load' function is allowed to call this constructor - LoadOpBuilder(coco::Module *module) : _module{module} - { - // 'module' SHOULD BE valid - assert(module != nullptr); - } - -public: - /** - * @brief Retrun a coco::Load op that loads a given object - */ - coco::Load *with(coco::Object *obj) const - { - auto op = _module->entity()->op()->create(); - op->object(obj); - return op; - } - -private: - coco::Module *_module; -}; - -LoadOpBuilder build_load(coco::Module *m) { return LoadOpBuilder{m}; } -LoadOpBuilder build_load(const std::unique_ptr &m) { return build_load(m.get()); } - class OpBuilder { public: @@ -166,7 +128,9 @@ public: */ OpBuilder &load(coco::Object *obj) { - push(build_load(_module).with(obj)); + auto op = _module->entity()->op()->create(); + op->object(obj); + push(op); return (*this); } @@ -440,7 +404,7 @@ enco::Bundle Frontend::load(void) const } // Create a Load op - auto load = build_load(m).with(ifm_obj); + auto load = op_builder(m).load(ifm_obj).pop(); // Create a Conv2D op auto op = m->entity()->op()->create(); @@ -556,7 +520,7 @@ enco::Bundle Frontend::load(void) const // MaxPool2D op builder builders[PoolingMethod::Max] = [ifm_obj](coco::Module *m, const PoolingSpec &spec) { - auto load = build_load(m).with(ifm_obj); + auto load = op_builder(m).load(ifm_obj).pop(); auto op = m->entity()->op()->create(); @@ -578,7 +542,7 @@ enco::Bundle Frontend::load(void) const // AvgPool2D op builder builders[PoolingMethod::Avg] = [ifm_obj](coco::Module *m, const PoolingSpec &spec) { - auto load = build_load(m).with(ifm_obj); + auto load = op_builder(m).load(ifm_obj).pop(); auto op = m->entity()->op()->create(); @@ -644,7 +608,7 @@ enco::Bundle Frontend::load(void) const ofm_obj->layout(coco::FeatureLayouts::BCHW::create(ofm_obj->shape())); // Create a Load Op - auto load = build_load(m).with(ifm_obj); + auto load = op_builder(m).load(ifm_obj).pop(); // Create a ReLU op auto op = m->entity()->op()->create(); @@ -800,7 +764,7 @@ enco::Bundle Frontend::load(void) const ifm_obj->bag(ifm_bag); ifm_obj->layout(BCHW::create(morph::caffe::as_feature_shape(ifm_shape))); - auto load = build_load(m).with(ifm_obj); + auto load = op_builder(m).load(ifm_obj).pop(); op = reduce(op, load); } -- 2.7.4