COMPIMID-553: MobileNet use case.

Change-Id: I1181abbd5785065f3d57e91844376a4b110938a9
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/110701
Tested-by: BSG Visual Compute Jenkins server to access repositories on http://mpd-gerrit.cambridge.arm.com <bsgcomp@arm.com>
Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
diff --git a/arm_compute/graph/Nodes.h b/arm_compute/graph/Nodes.h
index 79407f9..0282e1d 100644
--- a/arm_compute/graph/Nodes.h
+++ b/arm_compute/graph/Nodes.h
@@ -29,6 +29,7 @@
 #include "arm_compute/graph/nodes/BranchLayer.h"
 #include "arm_compute/graph/nodes/ConvolutionLayer.h"
 #include "arm_compute/graph/nodes/DepthConvertLayer.h"
+#include "arm_compute/graph/nodes/DepthwiseConvolutionLayer.h"
 #include "arm_compute/graph/nodes/DequantizationLayer.h"
 #include "arm_compute/graph/nodes/FlattenLayer.h"
 #include "arm_compute/graph/nodes/FloorLayer.h"
diff --git a/arm_compute/graph/nodes/BranchLayer.h b/arm_compute/graph/nodes/BranchLayer.h
index 3d13f5f..dd05315 100644
--- a/arm_compute/graph/nodes/BranchLayer.h
+++ b/arm_compute/graph/nodes/BranchLayer.h
@@ -64,6 +64,17 @@
         },
         std::move(rest_sub_graphs)...);
     }
+    /** Default Constructor
+     *
+     * @param[in] sub_graph Sub graph
+     */
+    template <typename... Ts>
+    BranchLayer(SubGraph &&sub_graph)
+        : _branch_merge_method(BranchMergeMethod::DEPTH_CONCATENATE), _sub_graphs()
+    {
+        /* TODO:(geopin01) Use traits to make sure variadic arguments are of SubGraph type */
+        _sub_graphs.push_back(arm_compute::support::cpp14::make_unique<SubGraph>(std::move(sub_graph)));
+    }
 
     // Inherited methods overriden:
     std::unique_ptr<arm_compute::IFunction> instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output) override;
diff --git a/arm_compute/graph/nodes/DepthwiseConvolutionLayer.h b/arm_compute/graph/nodes/DepthwiseConvolutionLayer.h
index 48b2ef9..8b7e3b8 100644
--- a/arm_compute/graph/nodes/DepthwiseConvolutionLayer.h
+++ b/arm_compute/graph/nodes/DepthwiseConvolutionLayer.h
@@ -47,13 +47,13 @@
      * @param[in] conv_width  Convolution width
      * @param[in] conv_height Convolution height
      * @param[in] weights     Weights values tensor
+     * @param[in] biases      Biases values tensor
      * @param[in] conv_info   Convolution info
-     * @param[in] biases      (Optional) Biases values tensor
      * @param[in] opt3x3      (Optional) If true executes DepthwiseConvolutionLayer3x3
      */
     template <typename AccessorType>
-    DepthwiseConvolutionLayer(unsigned int conv_width, unsigned int conv_height, AccessorType &&weights, const PadStrideInfo conv_info, AccessorType &&biases = nullptr, bool opt3x3 = true)
-        : _conv_width(conv_width), _conv_height(conv_height), _weights(std::move(weights)), _conv_info(conv_info), _biases(std::move(biases)), _opt3x3(opt3x3)
+    DepthwiseConvolutionLayer(unsigned int conv_width, unsigned int conv_height, AccessorType &&weights, AccessorType &&biases, const PadStrideInfo conv_info, bool opt3x3 = true)
+        : _conv_width(conv_width), _conv_height(conv_height), _weights(std::move(weights)), _biases(std::move(biases)), _conv_info(conv_info), _opt3x3(opt3x3)
     {
     }
 
@@ -64,8 +64,8 @@
     unsigned int        _conv_width;
     unsigned int        _conv_height;
     Tensor              _weights;
-    const PadStrideInfo _conv_info;
     Tensor              _biases;
+    const PadStrideInfo _conv_info;
     bool                _opt3x3;
 };
 } // namespace graph