Publishing 2019 R1 content
[platform/upstream/dldt.git] / inference-engine / tests / unit / shape_infer / built_in_shape_infer_general_test.cpp
index a7d3a64..1914365 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2018 Intel Corporation
+// Copyright (C) 2018-2019 Intel Corporation
 // SPDX-License-Identifier: Apache-2.0
 //
 
@@ -19,7 +19,8 @@ using namespace ShapeInfer;
 TEST_P(BuiltInShapeInferImplTest, impl) {
     auto impl = getShapeInferImpl(type);
     ASSERT_NE(nullptr, impl);
-    ASSERT_NO_THROW(sts = impl->inferShapes(newInOutShapes.inDims, layerParams.data, blobs, outShapes, &resp));
+    ASSERT_NO_THROW(
+            sts = impl->inferShapes(getBlobs(newInOutShapes.inDims), layerParams.data, blobs, outShapes, &resp));
 
     if (canInfer) {
         ASSERT_EQ(int(OK), sts) << resp.msg;
@@ -33,7 +34,6 @@ TEST_P(BuiltInShapeInferImplTest, reshaper) {
     auto cnnNetworkImplPtr = buildSingleLayerNetwork<3>(type, inOutShapes, &layerParams.data, layerDataName);
     auto reshaper = std::make_shared<Reshaper>(*cnnNetworkImplPtr);
     auto inputShapes = setInputShapes(*cnnNetworkImplPtr.get(), newInOutShapes.inDims);
-
     if (canInfer) {
         reshaper->run(inputShapes);
         checkNetworkInOut(*cnnNetworkImplPtr, newInOutShapes);
@@ -63,6 +63,19 @@ INSTANTIATE_TEST_CASE_P(
 );
 
 INSTANTIATE_TEST_CASE_P(
+        BuiltInMultiImpls, BuiltInShapeInferImplTest,
+        ::testing::Combine(
+                ::testing::Values(LayerType("Mul"), LayerType("Eltwise"), LayerType("Add"), LayerType("Div")),
+                ::testing::Values(InOutShapes({{{1, 1, 1, 1}, {1, 1, 1, 1}},
+                                               {{1, 1, 1, 1}}})),
+                ::testing::Values(NewInOutShapes({{{1, 3, 228, 228}, {1, 3, 228, 228}},
+                                                  {{1, 3, 228, 228}}})),
+                ::testing::Values(MapParams(MapStrStr())),
+                ::testing::Values(LayerDataName("data")),
+                ::testing::Values(CanInfer(true)))
+);
+
+INSTANTIATE_TEST_CASE_P(
         BuiltInGeneralImpls, BuiltInShapeInferImplTest,
         ::testing::Values(
                 ::testing::make_tuple(LayerType("LRN"),
@@ -144,9 +157,9 @@ INSTANTIATE_TEST_CASE_P(
                                       LayerDataName("data"),
                                       CanInfer(true)),
                 ::testing::make_tuple(LayerType("Reshape"),
-                                      InOutShapes({{{1, 1, 300, 4}},
+                                      InOutShapes({{{1,   1, 300, 4}},
                                                    {{300, 4}}}),
-                                      NewInOutShapes({{{1, 1, 500, 4}},
+                                      NewInOutShapes({{{1,   1, 500, 4}},
                                                       {{500, 4}}}),
                                       MapParams(MapStrStr(std::map<std::string, std::string>{{"dim", "-1,4"}})),
                                       LayerDataName("data"),
@@ -159,11 +172,11 @@ INSTANTIATE_TEST_CASE_P(
                                       MapParams(MapParams(MapStrStr())),
                                       LayerDataName("data"),
                                       CanInfer(true)),
-                ::testing::make_tuple(LayerType("PriorBoxClustered"),
-                                      InOutShapes({{{2, 1, 4, 5}},
+                ::testing::make_tuple(LayerType("PriorBoxClustered"), // TODO 5D test
+                                      InOutShapes({ {{2, 1, 4, 5}, {2, 4, 5, 6}},
                                                    {{1, 2, 400}}}),
-                                      NewInOutShapes({{{4, 1, 5, 5}},
-                                                      {{1, 2, 500}}}),
+                    NewInOutShapes({ {{4, 1, 5, 5}, {3, 5, 6, 3}},
+                                                      {{1, 2, 500}} }),
                                       MapParams(MapStrStr(
                                               std::map<std::string, std::string>{{"width",  "86.000000,13.000000,57.000000,39.000000,68.000000"},
                                                                                  {"clip",   "0"},
@@ -181,6 +194,7 @@ INSTANTIATE_TEST_CASE_P(
                                                                                  {"max_size",     "315"},
                                                                                  {"clip",         "0"},
                                                                                  {"flip",         "1"},
+                                                                                 { "offset",       "0.5" },
                                                                                  {"aspect_ratio", "2"}})),
                                       LayerDataName("data"),
                                       CanInfer(true)),
@@ -188,16 +202,16 @@ INSTANTIATE_TEST_CASE_P(
                                       InOutShapes({{{2, 512, 32, 32}, {2, 3, 512, 512}},
                                                    {{1, 2,   16384}}}),
                                       NewInOutShapes({{{2, 512, 32, 32}, {2, 3, 512, 512}},
-                                                   {{1, 2,   16384}}}),
+                                                      {{1, 2,   16384}}}),
                                       MapParams(MapStrStr(
-                                          std::map<std::string, std::string>{{"min_size",     "35.84,52.46464"},
-                                                                             {"max_size",     ""},
-                                                                             {"clip",         "0"},
-                                                                             {"step",         "16"},
-                                                                             {"flip",         "0"},
-                                                                             {"offset",       "0.5"},
-                                                                             {"aspect_ratio", "1.0,2.0,0.5"},
-                                                                             {"scale_all_sizes", "0"}})),
+                                              std::map<std::string, std::string>{{"min_size",        "35.84,52.46464"},
+                                                                                 {"max_size",        ""},
+                                                                                 {"clip",            "0"},
+                                                                                 {"step",            "16"},
+                                                                                 {"flip",            "0"},
+                                                                                 {"offset",          "0.5"},
+                                                                                 {"aspect_ratio",    "1.0,2.0,0.5"},
+                                                                                 {"scale_all_sizes", "0"}})),
                                       LayerDataName("data"),
                                       CanInfer(true)),
                 ::testing::make_tuple(LayerType("PriorBox"),
@@ -206,20 +220,20 @@ INSTANTIATE_TEST_CASE_P(
                                       NewInOutShapes({{{2, 512, 32, 32}, {2, 3, 512, 512}},
                                                       {{1, 2,   28672}}}),
                                       MapParams(MapStrStr(
-                                          std::map<std::string, std::string>{{"min_size",     "35.84,52.46464"},
-                                                                             {"max_size",     ""},
-                                                                             {"clip",         "0"},
-                                                                             {"step",         "16"},
-                                                                             {"offset",       "0.5"},
-                                                                             {"flip",         "1"},
-                                                                             {"aspect_ratio", "1.0,2.0,0.5"},
-                                                                             {"scale_all_sizes", "0"}})),
+                                              std::map<std::string, std::string>{{"min_size",        "35.84,52.46464"},
+                                                                                 {"max_size",        ""},
+                                                                                 {"clip",            "0"},
+                                                                                 {"step",            "16"},
+                                                                                 {"offset",          "0.5"},
+                                                                                 {"flip",            "1"},
+                                                                                 {"aspect_ratio",    "1.0,2.0,0.5"},
+                                                                                 {"scale_all_sizes", "0"}})),
                                       LayerDataName("data"),
                                       CanInfer(true)),
                 ::testing::make_tuple(LayerType("DetectionOutput"),
-                                      InOutShapes({{{2, 1, 4,   5}},
+                                      InOutShapes({{{2, 1, 4,   5}, { 2, 1, 4,   5 }, { 2, 1, 4,   5 }},
                                                    {{2, 1, 200, 7}}}),
-                                      NewInOutShapes({{{4, 1, 5,   5}},
+                                      NewInOutShapes({{{4, 1, 5,   5}, { 4, 1, 5,   5 }, { 4, 1, 5,   5 }},
                                                       {{1, 1, 800, 7}}}),
                                       MapParams(MapStrStr(std::map<std::string, std::string>{{"keep_top_k",    "200"},
                                                                                              {"num_classes",   "21"},
@@ -227,52 +241,41 @@ INSTANTIATE_TEST_CASE_P(
                                       LayerDataName("data"),
                                       CanInfer(true)),
                 ::testing::make_tuple(LayerType("Interp"),
-                                      InOutShapes({{{2, 2, 33,   65}},
+                                      InOutShapes({{{2, 2, 33,  65}},
                                                    {{2, 2, 257, 513}}}),
-                                      NewInOutShapes({{{2, 2, 33,   65}},
+                                      NewInOutShapes({{{2, 2, 33,  65}},
                                                       {{2, 2, 257, 513}}}),
                                       MapParams(MapStrStr(std::map<std::string, std::string>{{"align_corners", "1"},
-                                                                                             {"height", "257"},
-                                                                                             {"pad_beg", "0"},
-                                                                                             {"pad_end", "0"},
-                                                                                             {"width", "513"}})),
+                                                                                             {"height",        "257"},
+                                                                                             {"pad_beg",       "0"},
+                                                                                             {"pad_end",       "0"},
+                                                                                             {"width",         "513"}})),
                                       LayerDataName("data"),
                                       CanInfer(true)),
                 ::testing::make_tuple(LayerType("Interp"),
-                                      InOutShapes({{{2, 2, 33,   65}},
+                                      InOutShapes({{{2, 2, 33, 65}},
                                                    {{2, 2, 66, 513}}}),
-                                      NewInOutShapes({{{2, 2, 33,   65}},
+                                      NewInOutShapes({{{2, 2, 33, 65}},
                                                       {{2, 2, 66, 513}}}),
                                       MapParams(MapStrStr(std::map<std::string, std::string>{{"align_corners", "1"},
-                                                                                             {"factor", "2"},
-                                                                                             {"width", "513"},
-                                                                                             {"pad_beg", "0"},
-                                                                                             {"pad_end", "0"}})),
+                                                                                             {"factor",        "2"},
+                                                                                             {"width",         "513"},
+                                                                                             {"pad_beg",       "0"},
+                                                                                             {"pad_end",       "0"}})),
                                       LayerDataName("data"),
                                       CanInfer(true)),
                 ::testing::make_tuple(LayerType("Interp"),
-                                      InOutShapes({{{2, 2, 33,   65}},
+                                      InOutShapes({{{2, 2, 33,  65}},
                                                    {{2, 2, 257, 130}}}),
-                                      NewInOutShapes({{{2, 2, 33,   65}},
+                                      NewInOutShapes({{{2, 2, 33,  65}},
                                                       {{2, 2, 257, 130}}}),
                                       MapParams(MapStrStr(std::map<std::string, std::string>{{"align_corners", "1"},
-                                                                                             {"factor", "2"},
-                                                                                             {"height", "257"},
-                                                                                             {"pad_beg", "0"},
-                                                                                             {"pad_end", "0"}})),
+                                                                                             {"factor",        "2"},
+                                                                                             {"height",        "257"},
+                                                                                             {"pad_beg",       "0"},
+                                                                                             {"pad_end",       "0"}})),
                                       LayerDataName("data"),
                                       CanInfer(true)),
-                ::testing::make_tuple(LayerType("Interp"),
-                                      InOutShapes({{{2, 2, 33,   65}},
-                                                   {{2, 2, 257, 130}}}),
-                                      NewInOutShapes({{{2, 2, 33,   65}},
-                                                      {{2, 2, 257, 130}}}),
-                                      MapParams(MapStrStr(std::map<std::string, std::string>{{"align_corners", "1"},
-                                                                                             {"width", "513"},
-                                                                                             {"pad_beg", "0"},
-                                                                                             {"pad_end", "0"}})),
-                                      LayerDataName("data"),
-                                      CanInfer(false)),
                 ::testing::make_tuple(LayerType("ROIPooling"),
                                       InOutShapes({{{2,   3, 4, 5}, {150, 5}},
                                                    {{150, 3, 6, 6}}}),
@@ -292,7 +295,7 @@ INSTANTIATE_TEST_CASE_P(
                                       LayerDataName("data"),
                                       CanInfer(true)),
                 ::testing::make_tuple(LayerType("PSROIPooling"),
-                                      InOutShapes({{{1,   3, 4, 5}, {150, 5}},
+                                      InOutShapes({{{1, 3, 4, 5}, {150, 5}},
                                                    {{150, 2, 6, 6}}}),
                                       NewInOutShapes({{{2,   1, 5, 5}, {200, 5}},
                                                       {{200, 2, 6, 6}}}),
@@ -385,14 +388,6 @@ INSTANTIATE_TEST_CASE_P(
                                                                                              {"out_sizes", "2,4"}})),
                                       LayerDataName("data"),
                                       CanInfer(true)),
-                ::testing::make_tuple(LayerType("CTCGreedyDecoder"),
-                                      InOutShapes({{{88, 1,  48, 1}},
-                                                   {{1,  88, 1,  1}}}),
-                                      NewInOutShapes({{{88, 2,  48, 1}},
-                                                      {{2,  88, 1,  1}}}),
-                                      MapParams(MapStrStr()),
-                                      LayerDataName("data"),
-                                      CanInfer(true)),
                 ::testing::make_tuple(LayerType("Proposal"),
                                       InOutShapes({{{1,   12, 34, 62}, {1, 24, 34, 62}, {1, 6}},
                                                    {{200, 5}}}),
@@ -416,7 +411,9 @@ INSTANTIATE_TEST_CASE_P(
                                                    {{1, 21125}}}),
                                       NewInOutShapes({{{20, 125, 16, 13}},
                                                       {{20, 26000}}}),
-                                      MapParams(MapStrStr()),
+                                      MapParams(MapStrStr({{"axis",       "1"},
+                                                           {"end_axis",   "-1"},
+                                                           {"do_softmax", "1"}})),
                                       LayerDataName("data"),
                                       CanInfer(true)),
                 ::testing::make_tuple(LayerType("ArgMax"),
@@ -535,14 +532,14 @@ INSTANTIATE_TEST_CASE_P(
                                       LayerDataName("data"),
                                       CanInfer(true)),
                 ::testing::make_tuple(LayerType("Pad"),
-                                      InOutShapes({{{3, 3, 15, 10}},
+                                      InOutShapes({{{3, 3,  15, 10}},
                                                    {{9, 11, 25, 22}}}),
-                                      NewInOutShapes({{{4, 2, 20, 15}},
+                                      NewInOutShapes({{{4,  2,  20, 15}},
                                                       {{10, 10, 30, 27}}}),
-                                      MapParams(MapStrStr({{"pads_begin",  "1,2,3,4"},
-                                                           {"pads_end",    "5,6,7,8"},
-                                                           {"pad_mode",    "edge"},
-                                                           {"pad_value",   "1.0f"}})),
+                                      MapParams(MapStrStr({{"pads_begin", "1,2,3,4"},
+                                                           {"pads_end",   "5,6,7,8"},
+                                                           {"pad_mode",   "edge"},
+                                                           {"pad_value",  "1.0f"}})),
                                       LayerDataName("data"),
                                       CanInfer(true)),
                 ::testing::make_tuple(LayerType("Pad"),
@@ -550,33 +547,34 @@ INSTANTIATE_TEST_CASE_P(
                                                    {{16, 18, 25, 22}}}),
                                       NewInOutShapes({{{20, 30, 40, 50}},
                                                       {{26, 38, 40, 50}}}),
-                                      MapParams(MapStrStr({{"pads_begin",  "1,2,0,0"},
-                                                           {"pads_end",    "5,6,0,0"},
-                                                           {"pad_mode",    "reflect"},
-                                                           {"pad_value",   "1.0f"}})),
+                                      MapParams(MapStrStr({{"pads_begin", "1,2,0,0"},
+                                                           {"pads_end",   "5,6,0,0"},
+                                                           {"pad_mode",   "reflect"},
+                                                           {"pad_value",  "1.0f"}})),
                                       LayerDataName("data"),
                                       CanInfer(true)),
                 ::testing::make_tuple(LayerType("Pad"),
                                       InOutShapes({{{10, 10, 15, 10}},
                                                    {{16, 18, 25, 22}}}),
-                                      NewInOutShapes({{{4, 2, 20, 15}},
+                                      NewInOutShapes({{{4,  2,  20, 15}},
                                                       {{10, 10, 30, 27}}}),
-                                      MapParams(MapStrStr({{"pads_begin",  "1,2,3,4"},
-                                                           {"pads_end",    "5,6,7,8"},
-                                                           {"pad_mode",    "reflect"},
-                                                           {"pad_value",   "1.0f"}})),
+                                      MapParams(MapStrStr({{"pads_begin", "1,2,3,4"},
+                                                           {"pads_end",   "5,6,7,8"},
+                                                           {"pad_mode",   "reflect"},
+                                                           {"pad_value",  "1.0f"}})),
                                       LayerDataName("data"),
                                       CanInfer(false))
         )
 );
 
+// There are gtest limitation on tests number: 50
 INSTANTIATE_TEST_CASE_P(
         BuiltInGeneralImpls2, BuiltInShapeInferImplTest,
         ::testing::Values(
                 ::testing::make_tuple(LayerType("Gather"),
                                       InOutShapes({{{7, 16}, {1, 25}},
                                                    {{1, 25, 16}}}),
-                                      NewInOutShapes({{{7, 16}, {12, 25}},
+                                      NewInOutShapes({{{7,  16}, {12, 25}},
                                                       {{12, 25, 16}}}),
                                       MapParams(MapStrStr(std::map<std::string, std::string>{{"axis", "0"}})),
                                       LayerDataName("data"),
@@ -597,12 +595,29 @@ INSTANTIATE_TEST_CASE_P(
                                       MapParams(MapStrStr(std::map<std::string, std::string>{{"axis", "-1"}})),
                                       LayerDataName("data"),
                                       CanInfer(true)),
+                ::testing::make_tuple(LayerType("CTCGreedyDecoder"),
+                                      InOutShapes({{{88, 1,  48, 1}},
+                                                   {{1,  88, 1,  1}}}),
+                                      NewInOutShapes({{{88, 2,  48, 1}},
+                                                      {{2,  88, 1,  1}}}),
+                                      MapParams(MapStrStr()),
+                                      LayerDataName("data"),
+                                      CanInfer(true)),
+                ::testing::make_tuple(LayerType("CTCGreedyDecoder"),
+                                      InOutShapes({{{88, 1, 71}, {88, 1}},
+                                                   {{1,  88, 1, 1}}}),
+                                      NewInOutShapes({{{88, 2, 71}, {88, 2}},
+                                                      {{2,  88, 1,  1}}}),
+                                      MapParams(MapStrStr()),
+                                      LayerDataName("data"),
+                                      CanInfer(true)),
                 ::testing::make_tuple(LayerType("Reshape"),
                                       InOutShapes({{{1, 2}},
                                                    {{1, 1}}}),
                                       NewInOutShapes({{{1, 2}},
                                                       {{1, 1}}}),
-                                      MapParams(MapStrStr(std::map<std::string, std::string>{{"dim", "1,1"}})),  // dim doesn't match input
+                                      MapParams(MapStrStr(
+                                              std::map<std::string, std::string>{{"dim", "1,1"}})),  // dim doesn't match input
                                       LayerDataName("data"),
                                       CanInfer(false)),
                 ::testing::make_tuple(LayerType("Flatten"),
@@ -610,7 +625,7 @@ INSTANTIATE_TEST_CASE_P(
                                                    {{40}}}),
                                       NewInOutShapes({{{4, 1, 4, 5}},
                                                       {{80}}}),
-                                      MapParams(MapParams(MapStrStr(std::map<std::string, std::string>{{"axis", "0"},
+                                      MapParams(MapParams(MapStrStr(std::map<std::string, std::string>{{"axis",     "0"},
                                                                                                        {"end_axis", "-1"}}))),
                                       LayerDataName("data"),
                                       CanInfer(true)),
@@ -619,7 +634,7 @@ INSTANTIATE_TEST_CASE_P(
                                                    {{2, 8, 5}}}),
                                       NewInOutShapes({{{4, 2, 4, 5}},
                                                       {{4, 8, 5}}}),
-                                      MapParams(MapParams(MapStrStr(std::map<std::string, std::string>{{"axis", "1"},
+                                      MapParams(MapParams(MapStrStr(std::map<std::string, std::string>{{"axis",     "1"},
                                                                                                        {"end_axis", "2"}}))),
                                       LayerDataName("data"),
                                       CanInfer(true)),
@@ -628,7 +643,8 @@ INSTANTIATE_TEST_CASE_P(
                                                    {{2, 40}}}),
                                       NewInOutShapes({{{4, 2, 4, 5}},
                                                       {{4, 40}}}),
-                                      MapParams(MapParams(MapStrStr(std::map<std::string, std::string>{{"axis", "1"}}))),
+                                      MapParams(
+                                              MapParams(MapStrStr(std::map<std::string, std::string>{{"axis", "1"}}))),
                                       LayerDataName("data"),
                                       CanInfer(true)),
                 ::testing::make_tuple(LayerType("Flatten"),
@@ -636,7 +652,114 @@ INSTANTIATE_TEST_CASE_P(
                                                    {{4, 4, 5}}}),
                                       NewInOutShapes({{{4, 2, 4, 5}},
                                                       {{8, 4, 5}}}),
-                                      MapParams(MapParams(MapStrStr(std::map<std::string, std::string>{{"end_axis", "1"}}))),
+                                      MapParams(MapParams(
+                                              MapStrStr(std::map<std::string, std::string>{{"end_axis", "1"}}))),
+                                      LayerDataName("data"),
+                                      CanInfer(true)),
+                ::testing::make_tuple(LayerType("Interp"),
+                                      InOutShapes({{{2, 2, 100, 16}},
+                                                   {{2, 2, 25,  4}}}),
+                                      NewInOutShapes({{{2, 2, 201, 33}},
+                                                      {{2, 2, 50,  8}}}),
+                                      MapParams(MapStrStr(std::map<std::string, std::string>{{"align_corners", "1"},
+                                                                                             {"factor",        "0.25"},
+                                                                                             {"pad_beg",       "0"},
+                                                                                             {"pad_end",       "0"}})),
+                                      LayerDataName("data"),
+                                      CanInfer(true)),
+                ::testing::make_tuple(LayerType("Interp"),
+                                      InOutShapes({{{2, 2, 100, 16}},
+                                                   {{2, 2, 100, 16}}}),
+                                      NewInOutShapes({{{2, 2, 101, 33}},
+                                                      {{2, 2, 101, 33}}}),
+                                      MapParams(MapStrStr(std::map<std::string, std::string>{{"align_corners", "1"},
+                                                                                             {"shrink_factor", "1.5"},
+                                                                                             {"zoom_factor",   "1.5"},
+                                                                                             {"pad_beg",       "0"},
+                                                                                             {"pad_end",       "0"}})),
+                                      LayerDataName("data"),
+                                      CanInfer(true)),
+                ::testing::make_tuple(LayerType("ShuffleChannels"),
+                                      InOutShapes({{{1, 2, 3, 4}},
+                                                   {{1, 2, 3, 4}}}),
+                                      NewInOutShapes({{{2, 4, 4, 7}},
+                                                      {{2, 4, 4, 7}}}),
+                                      MapParams(MapStrStr(std::map<std::string, std::string>{{"axis",  "1"},
+                                                                                             {"group", "2"}})),
+                                      LayerDataName("data"),
+                                      CanInfer(true)),
+                ::testing::make_tuple(LayerType("DepthToSpace"),
+                                      InOutShapes({{{4, 2, 3}},
+                                                   {{1, 4, 6}}}),
+                                      NewInOutShapes({{{8, 3, 4}},
+                                                      {{2, 6, 8}}}),
+                                      MapParams(MapStrStr(std::map<std::string, std::string>{{"block_size", "2"}})),
+                                      LayerDataName("data"),
+                                      CanInfer(true)),
+                ::testing::make_tuple(LayerType("SpaceToDepth"),
+                                      InOutShapes({ { { 1, 4, 6 } },
+                                                    { { 4, 2, 3 } } }),
+                                      NewInOutShapes({ { { 2, 6, 8 } },
+                                                       { { 8, 3, 4 } } }),
+                                      MapParams(MapStrStr(std::map<std::string, std::string>{ {"block_size", "2"}})),
+                                      LayerDataName("data"),
+                                      CanInfer(true)),
+                ::testing::make_tuple(LayerType("ReverseSequence"),
+                                      InOutShapes({{{3, 4, 5}, {3}},
+                                                   {{3, 4, 5}}}),
+                                      NewInOutShapes({{{4, 8, 9}, {4}},
+                                                      {{4, 8, 9}}}),
+                                      MapParams(MapStrStr(std::map<std::string, std::string>{{"seq_axis",   "1"},
+                                                                                             {"batch_axis", "0"}})),
+                                      LayerDataName("data"),
+                                      CanInfer(true)),
+                ::testing::make_tuple(LayerType("RegionYolo"),
+                                      InOutShapes({{{1,       125, 13, 13}},
+                                                   {{1 * 125, 13,  13}}}),
+                                      NewInOutShapes({{{20,       125, 16, 13}},
+                                                      {{20 * 125, 16,  13}}}),
+                                      MapParams(MapStrStr({{"axis",       "0"},
+                                                           {"end_axis",   "1"},
+                                                           {"do_softmax", "1"}})),
+                                      LayerDataName("data"),
+                                      CanInfer(true)),
+                ::testing::make_tuple(LayerType("RegionYolo"),
+                                      InOutShapes({{{1,            125, 13, 13}},
+                                                   {{1 * 125 * 13, 13}}}),
+                                      NewInOutShapes({{{20,            125, 16, 13}},
+                                                      {{20 * 125 * 16, 13}}}),
+                                      MapParams(MapStrStr({{"axis",       "0"},
+                                                           {"end_axis",   "2"},
+                                                           {"do_softmax", "1"}})),
+                                      LayerDataName("data"),
+                                      CanInfer(true)),
+                ::testing::make_tuple(LayerType("RegionYolo"),
+                                      InOutShapes({{{1, 125,                13, 13}},
+                                                   {{1, (80 + 4 + 1) * 125, 13, 13}}}),
+                                      NewInOutShapes({{{20, 125,                16, 13}},
+                                                      {{20, (80 + 4 + 1) * 3, 16, 13}}}),
+                                      MapParams(MapStrStr({{"axis",       "1"},
+                                                           {"end_axis",   "-1"},
+                                                           {"do_softmax", "0"},
+                                                           {"classes",    "80"},
+                                                           {"coords",     "4"},
+                                                           {"mask",       "6,7,8"}})),
+                                      LayerDataName("data"),
+                                      CanInfer(true)),
+                ::testing::make_tuple(LayerType("Upsampling"),
+                                      InOutShapes({{{1, 3, 4, 5, 6}},
+                                                   {{1, 3, 8, 10, 12}}}),
+                                      NewInOutShapes({{{2, 1, 7, 5, 5}},
+                                                      {{2, 1, 14, 10, 10}}}),
+                                      MapParams(MapStrStr(std::map<std::string, std::string>{{"scale", "2"}})),
+                                      LayerDataName("data"),
+                                      CanInfer(true)),
+                ::testing::make_tuple(LayerType("Quantize"),
+                                      InOutShapes({{{1, 64, 10, 10}, {1, 64, 1, 1}, {1, 64, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}},
+                                                   {{1, 64, 10, 10}}}),
+                                      NewInOutShapes({{{2, 128, 10, 10}, {1, 128, 1, 1}, {1, 128, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}},
+                                                      {{2, 128, 10, 10}}}),
+                                      MapParams(MapStrStr(std::map<std::string, std::string>{ {"levels", "2"}})),
                                       LayerDataName("data"),
                                       CanInfer(true))
         )
@@ -668,3 +791,4 @@ INSTANTIATE_TEST_CASE_P(
                 ::testing::Values(CanInfer())
         )
 );
+