COMPMID-3221: Add EltwiseLayerDescriptor
authorSang-Hoon Park <sang-hoon.park@arm.com>
Wed, 11 Mar 2020 23:21:14 +0000 (23:21 +0000)
committerMichele Di Giorgio <michele.digiorgio@arm.com>
Fri, 13 Mar 2020 08:33:24 +0000 (08:33 +0000)
A new descriptor struct for EltwiseLayerNode is added to have better
extendability.

Change-Id: I3d0a4b3cec1f2425f39157cee6b5c344336412a3
Signed-off-by: Sang-Hoon Park <sang-hoon.park@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/2876
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com>
arm_compute/graph/LayerDescriptors.h
arm_compute/graph/nodes/EltwiseLayerNode.h
examples/graph_deepspeech_v0_4_1.cpp
examples/graph_edsr.h
src/graph/GraphBuilder.cpp
src/graph/nodes/EltwiseLayerNode.cpp

index 94074e550ef5b1fd16ae3772939ae9e22a6e0ebd..af69682fa3582cc1ad755ef80ccfb84366a6a7a1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019 ARM Limited.
+ * Copyright (c) 2019-2020 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  * SOFTWARE.
  */
-#ifndef ARM_COMPUTE_CONCAT_DESCRIPTOR_H
-#define ARM_COMPUTE_CONCAT_DESCRIPTOR_H
+#ifndef ARM_COMPUTE_LAYER_DESCRIPTORS_H
+#define ARM_COMPUTE_LAYER_DESCRIPTORS_H
 
 #include "arm_compute/core/Types.h"
+#include "arm_compute/graph/Types.h"
 
 namespace arm_compute
 {
@@ -63,7 +64,29 @@ struct ConcatLayerDescriptor
     const DataLayoutDimension axis;         /**< Concatenation Axis */
     const QuantizationInfo    output_qinfo; /**< Output quantizazion info */
 };
+
+/** Elementwise layer descriptor */
+struct EltwiseLayerDescriptor
+{
+    /** Constructor
+     *
+     * @param[in] op             Element-wise operation to perform
+     * @param[in] out_quant_info (Optional) Output quantization information. Defaults to empty @ref QuantizationInfo
+     * @param[in] c_policy       (Optional) Convert policy used for the operation. Defaults to @ref ConvertPolicy::SATURATE
+     * @param[in] r_policy       (Optional) Rounding policy used for the operation. Defaults to @ref RoundingPolicy::TO_ZERO
+     */
+    EltwiseLayerDescriptor(EltwiseOperation op, QuantizationInfo out_quant_info = QuantizationInfo(), ConvertPolicy c_policy = ConvertPolicy::SATURATE, RoundingPolicy r_policy = RoundingPolicy::TO_ZERO)
+        : op(op), out_quant_info(out_quant_info), c_policy(c_policy), r_policy(r_policy)
+    {
+    }
+
+    EltwiseOperation op;             /**< Element-wise operation to perform */
+    QuantizationInfo out_quant_info; /**< Output quantization information */
+    ConvertPolicy    c_policy;       /**< Convert policy */
+    RoundingPolicy   r_policy;       /**< Rounding policy */
+};
+
 } // namespace descriptor
 } // namespace graph
 } // namespace arm_compute
-#endif /* ARM_COMPUTE_CONCAT_DESCRIPTOR_H */
\ No newline at end of file
+#endif /* ARM_COMPUTE_LAYER_DESCRIPTORS_H */
\ No newline at end of file
index 1ca8e9c23d583b329ae10c0a59c81d6dd3ba5d5c..21c220a54832785c7a6f9fc4b738b7719f2ef597 100644 (file)
@@ -36,12 +36,9 @@ class EltwiseLayerNode final : public INode
 public:
     /** Constructor
      *
-     * @param[in] op             Element-wise operation to perform
-     * @param[in] out_quant_info (Optional) Output quantization information
-     * @param[in] c_policy       (Optional) Convert policy used for the operation
-     * @param[in] r_policy       (Optional) Rounding policy used for the operation
+     * @param[in] descriptor Containing information for the node described in @ref descriptors::EltwiseLayerDescriptor
      */
-    EltwiseLayerNode(EltwiseOperation op, QuantizationInfo out_quant_info = QuantizationInfo(), ConvertPolicy c_policy = ConvertPolicy::SATURATE, RoundingPolicy r_policy = RoundingPolicy::TO_ZERO);
+    EltwiseLayerNode(const descriptors::EltwiseLayerDescriptor &descriptor);
     /** Eltwise operation accessor
      *
      * @return Eltwise operation that is to be performed by the node
@@ -67,10 +64,7 @@ public:
     void accept(INodeVisitor &v) override;
 
 private:
-    EltwiseOperation _op;
-    QuantizationInfo _out_quant_info;
-    ConvertPolicy    _convert_policy;
-    RoundingPolicy   _rounding_policy;
+    descriptors::EltwiseLayerDescriptor descriptor;
 };
 } // namespace graph
 } // namespace arm_compute
index ed44ffbee2fb650b79211e32efb2c68ea26a2bc2..cc65bf309d5c835e4b90df6b7edb1f24015cee79 100644 (file)
@@ -289,7 +289,7 @@ private:
         tanh_ss.forward_tail(tanh_nid);
 
         // Add (third split)
-        NodeID add_nid = graph.graph().add_node<EltwiseLayerNode>(EltwiseOperation::Add);
+        NodeID add_nid = graph.graph().add_node<EltwiseLayerNode>(descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add });
         graph.graph().add_connection(split_nid, 2, add_nid, 0);
         graph.graph().add_connection(add_y.tail_node(), 0, add_nid, 1);
         set_node_params(graph.graph(), add_nid, add_params);
index 8941430c76bd2d124284737cb16002be07dde8a7..e31cc8940a4ab38eb66773209e6d0c963a80b1e9 100644 (file)
@@ -725,14 +725,14 @@ public:
         _graph.add_connection(id_block_0_1_Conv2D_bias, 0, id_block_0_1_BiasAdd, 2);
 
         NodeID id_mul = _graph.add_node<EltwiseLayerNode>(
-                            EltwiseOperation::Mul, QuantizationInfo{ 0.0006341293919831514, 174 });
+                            descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0006341293919831514, 174 } });
         INode *node_mul = _graph.node(id_mul);
         node_mul->set_common_node_parameters(NodeParams{ "mul", target });
         _graph.add_connection(id_block_0_1_BiasAdd, 0, id_mul, 0);
         _graph.add_connection(id_mul_y, 0, id_mul, 1);
 
         NodeID id_add = _graph.add_node<EltwiseLayerNode>(
-                            EltwiseOperation::Add, QuantizationInfo{ 0.0031092411372810602, 95 });
+                            descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0031092411372810602, 95 } });
         INode *node_add = _graph.node(id_add);
         node_add->set_common_node_parameters(NodeParams{ "add", target });
         _graph.add_connection(id_pre_residual_BiasAdd, 0, id_add, 0);
@@ -756,14 +756,14 @@ public:
         _graph.add_connection(id_block_1_1_Conv2D_bias, 0, id_block_1_1_BiasAdd, 2);
 
         NodeID id_mul_1 = _graph.add_node<EltwiseLayerNode>(
-                              EltwiseOperation::Mul, QuantizationInfo{ 0.0004965941770933568, 122 });
+                              descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0004965941770933568, 122 } });
         INode *node_mul_1 = _graph.node(id_mul_1);
         node_mul_1->set_common_node_parameters(NodeParams{ "mul_1", target });
         _graph.add_connection(id_block_1_1_BiasAdd, 0, id_mul_1, 0);
         _graph.add_connection(id_mul_1_y, 0, id_mul_1, 1);
 
         NodeID id_add_1 = _graph.add_node<EltwiseLayerNode>(
-                              EltwiseOperation::Add, QuantizationInfo{ 0.0030700892675668, 96 });
+                              descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0030700892675668, 96 } });
         INode *node_add_1 = _graph.node(id_add_1);
         node_add_1->set_common_node_parameters(NodeParams{ "add_1", target });
         _graph.add_connection(id_add, 0, id_add_1, 0);
@@ -787,14 +787,14 @@ public:
         _graph.add_connection(id_block_2_1_Conv2D_bias, 0, id_block_2_1_BiasAdd, 2);
 
         NodeID id_mul_2 = _graph.add_node<EltwiseLayerNode>(
-                              EltwiseOperation::Mul, QuantizationInfo{ 0.0004133903712499887, 130 });
+                              descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0004133903712499887, 130 } });
         INode *node_mul_2 = _graph.node(id_mul_2);
         node_mul_2->set_common_node_parameters(NodeParams{ "mul_2", target });
         _graph.add_connection(id_block_2_1_BiasAdd, 0, id_mul_2, 0);
         _graph.add_connection(id_mul_2_y, 0, id_mul_2, 1);
 
         NodeID id_add_2 = _graph.add_node<EltwiseLayerNode>(
-                              EltwiseOperation::Add, QuantizationInfo{ 0.003026385325938463, 94 });
+                              descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.003026385325938463, 94 } });
         INode *node_add_2 = _graph.node(id_add_2);
         node_add_2->set_common_node_parameters(NodeParams{ "add_2", target });
         _graph.add_connection(id_add_1, 0, id_add_2, 0);
@@ -818,14 +818,14 @@ public:
         _graph.add_connection(id_block_3_1_Conv2D_bias, 0, id_block_3_1_BiasAdd, 2);
 
         NodeID id_mul_3 = _graph.add_node<EltwiseLayerNode>(
-                              EltwiseOperation::Mul, QuantizationInfo{ 0.0003943995980080217, 141 });
+                              descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0003943995980080217, 141 } });
         INode *node_mul_3 = _graph.node(id_mul_3);
         node_mul_3->set_common_node_parameters(NodeParams{ "mul_3", target });
         _graph.add_connection(id_block_3_1_BiasAdd, 0, id_mul_3, 0);
         _graph.add_connection(id_mul_3_y, 0, id_mul_3, 1);
 
         NodeID id_add_3 = _graph.add_node<EltwiseLayerNode>(
-                              EltwiseOperation::Add, QuantizationInfo{ 0.003101327223703265, 98 });
+                              descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.003101327223703265, 98 } });
         INode *node_add_3 = _graph.node(id_add_3);
         node_add_3->set_common_node_parameters(NodeParams{ "add_3", target });
         _graph.add_connection(id_add_2, 0, id_add_3, 0);
@@ -849,14 +849,14 @@ public:
         _graph.add_connection(id_block_4_1_Conv2D_bias, 0, id_block_4_1_BiasAdd, 2);
 
         NodeID id_mul_4 = _graph.add_node<EltwiseLayerNode>(
-                              EltwiseOperation::Mul, QuantizationInfo{ 0.00044342130422592163, 143 });
+                              descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.00044342130422592163, 143 } });
         INode *node_mul_4 = _graph.node(id_mul_4);
         node_mul_4->set_common_node_parameters(NodeParams{ "mul_4", target });
         _graph.add_connection(id_block_4_1_BiasAdd, 0, id_mul_4, 0);
         _graph.add_connection(id_mul_4_y, 0, id_mul_4, 1);
 
         NodeID id_add_4 = _graph.add_node<EltwiseLayerNode>(
-                              EltwiseOperation::Add, QuantizationInfo{ 0.003150839824229479, 98 });
+                              descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.003150839824229479, 98 } });
         INode *node_add_4 = _graph.node(id_add_4);
         node_add_4->set_common_node_parameters(NodeParams{ "add_4", target });
         _graph.add_connection(id_add_3, 0, id_add_4, 0);
@@ -880,14 +880,14 @@ public:
         _graph.add_connection(id_block_5_1_Conv2D_bias, 0, id_block_5_1_BiasAdd, 2);
 
         NodeID id_mul_5 = _graph.add_node<EltwiseLayerNode>(
-                              EltwiseOperation::Mul, QuantizationInfo{ 0.0004023382789455354, 132 });
+                              descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0004023382789455354, 132 } });
         INode *node_mul_5 = _graph.node(id_mul_5);
         node_mul_5->set_common_node_parameters(NodeParams{ "mul_5", target });
         _graph.add_connection(id_block_5_1_BiasAdd, 0, id_mul_5, 0);
         _graph.add_connection(id_mul_5_y, 0, id_mul_5, 1);
 
         NodeID id_add_5 = _graph.add_node<EltwiseLayerNode>(
-                              EltwiseOperation::Add, QuantizationInfo{ 0.0030975888948887587, 94 });
+                              descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0030975888948887587, 94 } });
         INode *node_add_5 = _graph.node(id_add_5);
         node_add_5->set_common_node_parameters(NodeParams{ "add_5", target });
         _graph.add_connection(id_add_4, 0, id_add_5, 0);
@@ -911,14 +911,14 @@ public:
         _graph.add_connection(id_block_6_1_Conv2D_bias, 0, id_block_6_1_BiasAdd, 2);
 
         NodeID id_mul_6 = _graph.add_node<EltwiseLayerNode>(
-                              EltwiseOperation::Mul, QuantizationInfo{ 0.00041950203012675047, 125 });
+                              descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.00041950203012675047, 125 } });
         INode *node_mul_6 = _graph.node(id_mul_6);
         node_mul_6->set_common_node_parameters(NodeParams{ "mul_6", target });
         _graph.add_connection(id_block_6_1_BiasAdd, 0, id_mul_6, 0);
         _graph.add_connection(id_mul_6_y, 0, id_mul_6, 1);
 
         NodeID id_add_6 = _graph.add_node<EltwiseLayerNode>(
-                              EltwiseOperation::Add, QuantizationInfo{ 0.003155382815748453, 92 });
+                              descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.003155382815748453, 92 } });
         INode *node_add_6 = _graph.node(id_add_6);
         node_add_6->set_common_node_parameters(NodeParams{ "add_6", target });
         _graph.add_connection(id_add_5, 0, id_add_6, 0);
@@ -942,14 +942,14 @@ public:
         _graph.add_connection(id_block_7_1_Conv2D_bias, 0, id_block_7_1_BiasAdd, 2);
 
         NodeID id_mul_7 = _graph.add_node<EltwiseLayerNode>(
-                              EltwiseOperation::Mul, QuantizationInfo{ 0.00042401350219734013, 142 });
+                              descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.00042401350219734013, 142 } });
         INode *node_mul_7 = _graph.node(id_mul_7);
         node_mul_7->set_common_node_parameters(NodeParams{ "mul_7", target });
         _graph.add_connection(id_block_7_1_BiasAdd, 0, id_mul_7, 0);
         _graph.add_connection(id_mul_7_y, 0, id_mul_7, 1);
 
         NodeID id_add_7 = _graph.add_node<EltwiseLayerNode>(
-                              EltwiseOperation::Add, QuantizationInfo{ 0.0031760605052113533, 86 });
+                              descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0031760605052113533, 86 } });
         INode *node_add_7 = _graph.node(id_add_7);
         node_add_7->set_common_node_parameters(NodeParams{ "add_7", target });
         _graph.add_connection(id_add_6, 0, id_add_7, 0);
@@ -973,14 +973,14 @@ public:
         _graph.add_connection(id_block_8_1_Conv2D_bias, 0, id_block_8_1_BiasAdd, 2);
 
         NodeID id_mul_8 = _graph.add_node<EltwiseLayerNode>(
-                              EltwiseOperation::Mul, QuantizationInfo{ 0.00042673019925132394, 123 });
+                              descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.00042673019925132394, 123 } });
         INode *node_mul_8 = _graph.node(id_mul_8);
         node_mul_8->set_common_node_parameters(NodeParams{ "mul_8", target });
         _graph.add_connection(id_block_8_1_BiasAdd, 0, id_mul_8, 0);
         _graph.add_connection(id_mul_8_y, 0, id_mul_8, 1);
 
         NodeID id_add_8 = _graph.add_node<EltwiseLayerNode>(
-                              EltwiseOperation::Add, QuantizationInfo{ 0.0032156009692698717, 86 });
+                              descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0032156009692698717, 86 } });
         INode *node_add_8 = _graph.node(id_add_8);
         node_add_8->set_common_node_parameters(NodeParams{ "add_8", target });
         _graph.add_connection(id_add_7, 0, id_add_8, 0);
@@ -1004,14 +1004,14 @@ public:
         _graph.add_connection(id_block_9_1_Conv2D_bias, 0, id_block_9_1_BiasAdd, 2);
 
         NodeID id_mul_9 = _graph.add_node<EltwiseLayerNode>(
-                              EltwiseOperation::Mul, QuantizationInfo{ 0.0004448975087143481, 129 });
+                              descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0004448975087143481, 129 } });
         INode *node_mul_9 = _graph.node(id_mul_9);
         node_mul_9->set_common_node_parameters(NodeParams{ "mul_9", target });
         _graph.add_connection(id_block_9_1_BiasAdd, 0, id_mul_9, 0);
         _graph.add_connection(id_mul_9_y, 0, id_mul_9, 1);
 
         NodeID id_add_9 = _graph.add_node<EltwiseLayerNode>(
-                              EltwiseOperation::Add, QuantizationInfo{ 0.0032742770854383707, 80 });
+                              descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0032742770854383707, 80 } });
         INode *node_add_9 = _graph.node(id_add_9);
         node_add_9->set_common_node_parameters(NodeParams{ "add_9", target });
         _graph.add_connection(id_add_8, 0, id_add_9, 0);
@@ -1035,14 +1035,14 @@ public:
         _graph.add_connection(id_block_10_1_Conv2D_bias, 0, id_block_10_1_BiasAdd, 2);
 
         NodeID id_mul_10 = _graph.add_node<EltwiseLayerNode>(
-                               EltwiseOperation::Mul, QuantizationInfo{ 0.00036083892337046564, 130 });
+                               descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.00036083892337046564, 130 } });
         INode *node_mul_10 = _graph.node(id_mul_10);
         node_mul_10->set_common_node_parameters(NodeParams{ "mul_10", target });
         _graph.add_connection(id_block_10_1_BiasAdd, 0, id_mul_10, 0);
         _graph.add_connection(id_mul_10_y, 0, id_mul_10, 1);
 
         NodeID id_add_10 = _graph.add_node<EltwiseLayerNode>(
-                               EltwiseOperation::Add, QuantizationInfo{ 0.0031881770119071007, 81 });
+                               descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0031881770119071007, 81 } });
         INode *node_add_10 = _graph.node(id_add_10);
         node_add_10->set_common_node_parameters(NodeParams{ "add_10", target });
         _graph.add_connection(id_add_9, 0, id_add_10, 0);
@@ -1066,14 +1066,14 @@ public:
         _graph.add_connection(id_block_11_1_Conv2D_bias, 0, id_block_11_1_BiasAdd, 2);
 
         NodeID id_mul_11 = _graph.add_node<EltwiseLayerNode>(
-                               EltwiseOperation::Mul, QuantizationInfo{ 0.0003968806122429669, 133 });
+                               descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0003968806122429669, 133 } });
         INode *node_mul_11 = _graph.node(id_mul_11);
         node_mul_11->set_common_node_parameters(NodeParams{ "mul_11", target });
         _graph.add_connection(id_block_11_1_BiasAdd, 0, id_mul_11, 0);
         _graph.add_connection(id_mul_11_y, 0, id_mul_11, 1);
 
         NodeID id_add_11 = _graph.add_node<EltwiseLayerNode>(
-                               EltwiseOperation::Add, QuantizationInfo{ 0.0032707711216062307, 80 });
+                               descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0032707711216062307, 80 } });
         INode *node_add_11 = _graph.node(id_add_11);
         node_add_11->set_common_node_parameters(NodeParams{ "add_11", target });
         _graph.add_connection(id_add_10, 0, id_add_11, 0);
@@ -1097,14 +1097,14 @@ public:
         _graph.add_connection(id_block_12_1_Conv2D_bias, 0, id_block_12_1_BiasAdd, 2);
 
         NodeID id_mul_12 = _graph.add_node<EltwiseLayerNode>(
-                               EltwiseOperation::Mul, QuantizationInfo{ 0.0004365936329122633, 110 });
+                               descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0004365936329122633, 110 } });
         INode *node_mul_12 = _graph.node(id_mul_12);
         node_mul_12->set_common_node_parameters(NodeParams{ "mul_12", target });
         _graph.add_connection(id_block_12_1_BiasAdd, 0, id_mul_12, 0);
         _graph.add_connection(id_mul_12_y, 0, id_mul_12, 1);
 
         NodeID id_add_12 = _graph.add_node<EltwiseLayerNode>(
-                               EltwiseOperation::Add, QuantizationInfo{ 0.003275055903941393, 79 });
+                               descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.003275055903941393, 79 } });
         INode *node_add_12 = _graph.node(id_add_12);
         node_add_12->set_common_node_parameters(NodeParams{ "add_12", target });
         _graph.add_connection(id_add_11, 0, id_add_12, 0);
@@ -1128,14 +1128,14 @@ public:
         _graph.add_connection(id_block_13_1_Conv2D_bias, 0, id_block_13_1_BiasAdd, 2);
 
         NodeID id_mul_13 = _graph.add_node<EltwiseLayerNode>(
-                               EltwiseOperation::Mul, QuantizationInfo{ 0.0004385628562886268, 139 });
+                               descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0004385628562886268, 139 } });
         INode *node_mul_13 = _graph.node(id_mul_13);
         node_mul_13->set_common_node_parameters(NodeParams{ "mul_13", target });
         _graph.add_connection(id_block_13_1_BiasAdd, 0, id_mul_13, 0);
         _graph.add_connection(id_mul_13_y, 0, id_mul_13, 1);
 
         NodeID id_add_13 = _graph.add_node<EltwiseLayerNode>(
-                               EltwiseOperation::Add, QuantizationInfo{ 0.0033287261612713337, 78 });
+                               descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0033287261612713337, 78 } });
         INode *node_add_13 = _graph.node(id_add_13);
         node_add_13->set_common_node_parameters(NodeParams{ "add_13", target });
         _graph.add_connection(id_add_12, 0, id_add_13, 0);
@@ -1159,14 +1159,14 @@ public:
         _graph.add_connection(id_block_14_1_Conv2D_bias, 0, id_block_14_1_BiasAdd, 2);
 
         NodeID id_mul_14 = _graph.add_node<EltwiseLayerNode>(
-                               EltwiseOperation::Mul, QuantizationInfo{ 0.00037829321809113026, 130 });
+                               descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.00037829321809113026, 130 } });
         INode *node_mul_14 = _graph.node(id_mul_14);
         node_mul_14->set_common_node_parameters(NodeParams{ "mul_14", target });
         _graph.add_connection(id_block_14_1_BiasAdd, 0, id_mul_14, 0);
         _graph.add_connection(id_mul_14_y, 0, id_mul_14, 1);
 
         NodeID id_add_14 = _graph.add_node<EltwiseLayerNode>(
-                               EltwiseOperation::Add, QuantizationInfo{ 0.0033590947277843952, 77 });
+                               descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0033590947277843952, 77 } });
         INode *node_add_14 = _graph.node(id_add_14);
         node_add_14->set_common_node_parameters(NodeParams{ "add_14", target });
         _graph.add_connection(id_add_13, 0, id_add_14, 0);
@@ -1190,14 +1190,14 @@ public:
         _graph.add_connection(id_block_15_1_Conv2D_bias, 0, id_block_15_1_BiasAdd, 2);
 
         NodeID id_mul_15 = _graph.add_node<EltwiseLayerNode>(
-                               EltwiseOperation::Mul, QuantizationInfo{ 0.0004008286341559142, 130 });
+                               descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0004008286341559142, 130 } });
         INode *node_mul_15 = _graph.node(id_mul_15);
         node_mul_15->set_common_node_parameters(NodeParams{ "mul_15", target });
         _graph.add_connection(id_block_15_1_BiasAdd, 0, id_mul_15, 0);
         _graph.add_connection(id_mul_15_y, 0, id_mul_15, 1);
 
         NodeID id_add_15 = _graph.add_node<EltwiseLayerNode>(
-                               EltwiseOperation::Add, QuantizationInfo{ 0.0035031239967793226, 78 });
+                               descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0035031239967793226, 78 } });
         INode *node_add_15 = _graph.node(id_add_15);
         node_add_15->set_common_node_parameters(NodeParams{ "add_15", target });
         _graph.add_connection(id_add_14, 0, id_add_15, 0);
@@ -1221,7 +1221,7 @@ public:
         _graph.add_connection(id_post_residual_Conv2D_bias, 0, id_post_residual_BiasAdd, 2);
 
         NodeID id_add_16 = _graph.add_node<EltwiseLayerNode>(
-                               EltwiseOperation::Add, QuantizationInfo{ 0.0065071373246610165, 89 });
+                               descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0065071373246610165, 89 } });
         INode *node_add_16 = _graph.node(id_add_16);
         node_add_16->set_common_node_parameters(NodeParams{ "add_16", target });
         _graph.add_connection(id_post_residual_BiasAdd, 0, id_add_16, 0);
index 97ade9362dae84ca48ffe816896e876fe4df4a27..e429817d50f2ace62f95a326877099cfe32a0446 100644 (file)
@@ -438,7 +438,7 @@ NodeID GraphBuilder::add_elementwise_node(Graph &g, NodeParams params, NodeIdxPa
     check_nodeidx_pair(input0, g);
     check_nodeidx_pair(input1, g);
 
-    NodeID nid = g.add_node<EltwiseLayerNode>(operation);
+    NodeID nid = g.add_node<EltwiseLayerNode>(descriptors::EltwiseLayerDescriptor{ operation });
 
     g.add_connection(input0.node_id, input0.index, nid, 0);
     g.add_connection(input1.node_id, input1.index, nid, 1);
index 7970bad5f75691fe97e971929cae4a7d85e88f5d..a83a5fb3b2171e6ea2308386c0cd8c6c797a8e6f 100644 (file)
@@ -30,8 +30,8 @@ namespace arm_compute
 {
 namespace graph
 {
-EltwiseLayerNode::EltwiseLayerNode(EltwiseOperation op, QuantizationInfo out_quant_info, ConvertPolicy c_policy, RoundingPolicy r_policy)
-    : _op(op), _out_quant_info(out_quant_info), _convert_policy(c_policy), _rounding_policy(r_policy)
+EltwiseLayerNode::EltwiseLayerNode(const descriptors::EltwiseLayerDescriptor &descriptor)
+    : descriptor(descriptor)
 {
     _input_edges.resize(2, EmptyEdgeID);
     _outputs.resize(1, NullTensorID);
@@ -39,17 +39,17 @@ EltwiseLayerNode::EltwiseLayerNode(EltwiseOperation op, QuantizationInfo out_qua
 
 EltwiseOperation EltwiseLayerNode::eltwise_operation() const
 {
-    return _op;
+    return descriptor.op;
 }
 
 ConvertPolicy EltwiseLayerNode::convert_policy() const
 {
-    return _convert_policy;
+    return descriptor.c_policy;
 }
 
 RoundingPolicy EltwiseLayerNode::rounding_policy() const
 {
-    return _rounding_policy;
+    return descriptor.r_policy;
 }
 
 bool EltwiseLayerNode::forward_descriptors()
@@ -66,16 +66,16 @@ bool EltwiseLayerNode::forward_descriptors()
 
 TensorDescriptor EltwiseLayerNode::configure_output(size_t idx) const
 {
-    ARM_COMPUTE_UNUSED(idx, _op, _convert_policy, _rounding_policy);
+    ARM_COMPUTE_UNUSED(idx);
 
     const Tensor *src = input(0);
     ARM_COMPUTE_ERROR_ON(src == nullptr);
 
     auto output_info = src->desc();
 
-    if(!_out_quant_info.empty())
+    if(!descriptor.out_quant_info.empty())
     {
-        output_info.set_quantization_info(_out_quant_info);
+        output_info.set_quantization_info(descriptor.out_quant_info);
     }
 
     return output_info;