COMPMID-1995: Prepare Graph to support different input/output quantization info
- Added support for different input/output qinfo in ActivationLayer and DepthwiseConv
- Added support for different input/output qinfo in ConcatenateLayer introducing ConcatDescriptor
- Added reshape validate
- Allow OutputLayer to return a specific connection index from the input
- Not run Inplace and Depth mutator when input/output quantization info are different
Change-Id: I03f5e416fc43ddd284e1501887202a3145f76d8a
Signed-off-by: Isabella Gottardi <isabella.gottardi@arm.com>
Reviewed-on: https://review.mlplatform.org/c/852
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
diff --git a/arm_compute/graph/nodes/ActivationLayerNode.h b/arm_compute/graph/nodes/ActivationLayerNode.h
index 7231206..a17b010 100644
--- a/arm_compute/graph/nodes/ActivationLayerNode.h
+++ b/arm_compute/graph/nodes/ActivationLayerNode.h
@@ -36,9 +36,11 @@
public:
/** Constructor
*
- * @param[in] info Activation Layer information
+ * @param[in] info Activation Layer information
+ * @param[in] out_quant_info (Optional) Output quantization info
*/
- ActivationLayerNode(ActivationLayerInfo info);
+ ActivationLayerNode(ActivationLayerInfo info,
+ QuantizationInfo out_quant_info = QuantizationInfo());
/** Activation metadata accessor
*
* @return The activation info of the layer
@@ -56,6 +58,7 @@
private:
ActivationLayerInfo _info;
+ QuantizationInfo _out_quant_info;
};
} // namespace graph
} // namespace arm_compute
diff --git a/arm_compute/graph/nodes/ConcatenateLayerNode.h b/arm_compute/graph/nodes/ConcatenateLayerNode.h
index 20c8523..fc12284 100644
--- a/arm_compute/graph/nodes/ConcatenateLayerNode.h
+++ b/arm_compute/graph/nodes/ConcatenateLayerNode.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018 ARM Limited.
+ * Copyright (c) 2018-2019 ARM Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -36,10 +36,10 @@
public:
/** Constructor
*
- * @param[in] total_nodes Number of nodes that will get concatenated
- * @param[in] axis Concatenation axis
+ * @param[in] total_nodes Number of nodes that will get concatenated
+ * @param[in] concat_descriptor Concatenate Layer Descriptor
*/
- ConcatenateLayerNode(unsigned int total_nodes, DataLayoutDimension axis);
+ ConcatenateLayerNode(unsigned int total_nodes, descriptors::ConcatLayerDescriptor concat_descriptor);
/** Computes concatenations output descriptor
*
* @param[in] input_descriptors Input descriptors
@@ -68,6 +68,12 @@
*/
DataLayoutDimension concatenation_axis() const;
+ /** Concatenation output quantization info accessor
+ *
+ * @return Output quantization info
+ */
+ QuantizationInfo output_quantization_info() const;
+
// Inherited overridden methods:
NodeType type() const override;
bool forward_descriptors() override;
@@ -75,9 +81,9 @@
void accept(INodeVisitor &v) override;
private:
- unsigned int _total_nodes;
- DataLayoutDimension _axis;
- bool _is_enabled;
+ unsigned int _total_nodes;
+ descriptors::ConcatLayerDescriptor _concat_descriptor;
+ bool _is_enabled;
};
} // namespace graph
} // namespace arm_compute
diff --git a/arm_compute/graph/nodes/DepthwiseConvolutionLayerNode.h b/arm_compute/graph/nodes/DepthwiseConvolutionLayerNode.h
index 8c0aae1..fd02734 100644
--- a/arm_compute/graph/nodes/DepthwiseConvolutionLayerNode.h
+++ b/arm_compute/graph/nodes/DepthwiseConvolutionLayerNode.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018 ARM Limited.
+ * Copyright (c) 2018-2019 ARM Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -39,10 +39,12 @@
* @param[in] info Convolution layer attributes
* @param[in] depth_multiplier (Optional) Depth multiplier parameter.
* @param[in] method (Optional) Depthwise convolution method to use
+ * @param[in] out_quant_info (Optional) Output quantization info
*/
DepthwiseConvolutionLayerNode(PadStrideInfo info,
int depth_multiplier = 1,
- DepthwiseConvolutionMethod method = DepthwiseConvolutionMethod::Default);
+ DepthwiseConvolutionMethod method = DepthwiseConvolutionMethod::Default,
+ QuantizationInfo out_quant_info = QuantizationInfo());
/** Sets the depthwise convolution method to use
*
* @param[in] method Depthwise convolution method to use
@@ -103,6 +105,7 @@
PadStrideInfo _info;
int _depth_multiplier;
DepthwiseConvolutionMethod _method;
+ QuantizationInfo _out_quant_info;
ActivationLayerInfo _fused_activation;
};
} // namespace graph