From: Jihoon Lee Date: Tue, 30 Mar 2021 05:48:40 +0000 (+0900) Subject: [Pooling2D] Change warning to error at init X-Git-Tag: submit/tizen/20210330.110555^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d6bbef0dd92d5316a98e007ec1d33b19d9ae0c8b;p=platform%2Fcore%2Fml%2Fnntrainer.git [Pooling2D] Change warning to error at init For global_* pooling change warning to error for some parameter check **Self evaluation:** 1. Build test: [X]Passed [ ]Failed [ ]Skipped 2. Run test: [X]Passed [ ]Failed [ ]Skipped Signed-off-by: Jihoon Lee --- diff --git a/nntrainer/layers/pooling2d_layer.cpp b/nntrainer/layers/pooling2d_layer.cpp index 10da0503..31c96fcb 100644 --- a/nntrainer/layers/pooling2d_layer.cpp +++ b/nntrainer/layers/pooling2d_layer.cpp @@ -34,6 +34,11 @@ int Pooling2DLayer::initialize(Manager &manager) { return ML_ERROR_INVALID_PARAMETER; } + if (input_dim.size() != 1) { + ml_loge("[Pooling2D] pooling layer only accepts number of one layer"); + return ML_ERROR_INVALID_PARAMETER; + } + TensorDim &in_dim = input_dim[0]; TensorDim &out_dim = output_dim[0]; @@ -43,23 +48,22 @@ int Pooling2DLayer::initialize(Manager &manager) { if (pooling_type == PoolingType::global_max || pooling_type == PoolingType::global_average) { - if (pool_size[0] != in_dim.height() || pool_size[1] != in_dim.width()) { - ml_logw( + if (pool_size[0] != 0 || pool_size[1] != 0) { + ml_loge( "[Pooling2D] global_max, global_average does not accept pool size"); - pool_size[0] = in_dim.height(); - pool_size[1] = in_dim.width(); + return ML_ERROR_INVALID_PARAMETER; } + pool_size[0] = in_dim.height(); + pool_size[1] = in_dim.width(); if (padding[0] != 0 || padding[1] != 0) { - ml_logw("[Pooling2D] global_max, global_average does not accept padding"); - padding[0] = 0; - padding[1] = 0; + ml_loge("[Pooling2D] global_max, global_average does not accept padding"); + return ML_ERROR_INVALID_PARAMETER; } if (stride[0] != 1 || stride[1] != 1) { - ml_logw("[Pooling2D] global_max, global_average does not accept stride"); - stride[0] = 1; - stride[1] = 1; + ml_loge("[Pooling2D] global_max, global_average does not accept stride"); + return ML_ERROR_INVALID_PARAMETER; } } diff --git a/nntrainer/layers/pooling2d_layer.h b/nntrainer/layers/pooling2d_layer.h index cc74a673..3b464b41 100644 --- a/nntrainer/layers/pooling2d_layer.h +++ b/nntrainer/layers/pooling2d_layer.h @@ -141,7 +141,17 @@ private: std::array padding; std::vector max_idx; /**< in case of max pool, idx that points to the first max item - in case of avearge pol, effective average counter */ + in case of avearge pol, effective average counter + effective average counter is number of patches actually + counted into when calculating the average + // clang-format off + eg) pooling of below + x x x + x 3 3 + x 3 3 + = 12 / 4 = 3 + // clang-format on + */ std::vector> max_idx_global; PoolingType pooling_type; diff --git a/test/unittest/unittest_nntrainer_appcontext.cpp b/test/unittest/unittest_nntrainer_appcontext.cpp index 8d212cb7..25f37c51 100644 --- a/test/unittest/unittest_nntrainer_appcontext.cpp +++ b/test/unittest/unittest_nntrainer_appcontext.cpp @@ -104,7 +104,8 @@ public: void addOptimizerVariable(std::vector ¶ms) override {} - void setProperty(const PropertyType type, const std::string &value = "") override {} + void setProperty(const PropertyType type, + const std::string &value = "") override {} void checkValidation() const override {} @@ -134,7 +135,8 @@ public: int setProperty(std::vector values) override { return 1; } - void setProperty(const PropertyType type, const std::string &value = "") override {} + void setProperty(const PropertyType type, + const std::string &value = "") override {} int checkValidation() override { return 1; } diff --git a/test/unittest/unittest_nntrainer_layers.cpp b/test/unittest/unittest_nntrainer_layers.cpp index f4ec5b74..40880ad2 100644 --- a/test/unittest/unittest_nntrainer_layers.cpp +++ b/test/unittest/unittest_nntrainer_layers.cpp @@ -1803,7 +1803,7 @@ TEST_F(nntrainer_Pooling2DLayer, backwarding_02_p) { TEST_F(nntrainer_Pooling2DLayer, backwarding_03_p) { resetLayer(); setInputDim("2:5:5"); - setProperty("pool_size=2,2 | stride=1,1 | padding=0,0 | pooling=global_max"); + setProperty("pooling=global_max"); initialize(); allocateMemory(); @@ -1826,8 +1826,7 @@ TEST_F(nntrainer_Pooling2DLayer, backwarding_03_p) { TEST_F(nntrainer_Pooling2DLayer, backwarding_04_p) { setInputDim("2:5:5"); - setProperty( - "pool_size=2,2 | stride=1,1 | padding=0,0 | pooling=global_average"); + setProperty("pooling=global_average"); initialize(); allocateMemory(); loadFile("tc_pooling2d_1.in", in);