Allow a different input order for Mul+Maximum.
authorTriplesalt <39653793+Triplesalt@users.noreply.github.com>
Fri, 20 Jul 2018 01:03:17 +0000 (03:03 +0200)
committerTriplesalt <39653793+Triplesalt@users.noreply.github.com>
Thu, 26 Jul 2018 12:19:11 +0000 (14:19 +0200)
Squashed : ReLU operand order tests.

modules/dnn/src/tensorflow/tf_importer.cpp
modules/dnn/test/test_tf_importer.cpp

index 89732b4..57d4978 100644 (file)
@@ -1260,7 +1260,13 @@ void TFImporter::populateNet(Net dstNet)
                     if (!next_layers.empty())
                     {
                         int maximumLayerIdx = next_layers[0].second;
-                        ExcludeLayer(net, maximumLayerIdx, 0, false);
+
+                        CV_Assert(net.node(maximumLayerIdx).input_size() == 2);
+
+                        // The input from the Mul layer can also be at index 1.
+                        int mulInputIdx = (net.node(maximumLayerIdx).input(0) == name) ? 0 : 1;
+
+                        ExcludeLayer(net, maximumLayerIdx, mulInputIdx, false);
                         layers_to_ignore.insert(next_layers[0].first);
 
                         layerParams.set("negative_slope", scaleMat.at<float>(0));
index 6ab0e41..bd5c63d 100644 (file)
@@ -230,6 +230,13 @@ TEST_P(Test_TensorFlow_layers, flatten)
     runTensorFlowNet("unfused_flatten_unknown_batch");
 }
 
+TEST_P(Test_TensorFlow_layers, leaky_relu)
+{
+    runTensorFlowNet("leaky_relu_order1");
+    runTensorFlowNet("leaky_relu_order2");
+    runTensorFlowNet("leaky_relu_order3");
+}
+
 TEST_P(Test_TensorFlow_layers, l2_normalize)
 {
     runTensorFlowNet("l2_normalize");