From 27c9efb922832e5e6785a492e84a46934d9a47f8 Mon Sep 17 00:00:00 2001 From: Michalis Spyrou Date: Mon, 9 Oct 2017 15:46:30 +0100 Subject: COMPMID-554 Add Nodes - BatchNormalization - DepthConvert - Dequantization - Flatten - Quantization - Reshape Change-Id: Ie01a04b7a6cc8e2b5481cf2345268e6871580d7f Reviewed-on: http://mpd-gerrit.cambridge.arm.com/91618 Tested-by: Kaizen Reviewed-by: Anthony Barbier --- arm_compute/graph/Nodes.h | 5 +++ arm_compute/graph/Types.h | 6 +++ arm_compute/graph/nodes/DepthConvertLayer.h | 58 ++++++++++++++++++++++++++ arm_compute/graph/nodes/DequantizationLayer.h | 59 +++++++++++++++++++++++++++ arm_compute/graph/nodes/FlattenLayer.h | 45 ++++++++++++++++++++ arm_compute/graph/nodes/FloorLayer.h | 2 +- arm_compute/graph/nodes/QuantizationLayer.h | 45 ++++++++++++++++++++ arm_compute/graph/nodes/ReshapeLayer.h | 54 ++++++++++++++++++++++++ 8 files changed, 273 insertions(+), 1 deletion(-) create mode 100644 arm_compute/graph/nodes/DepthConvertLayer.h create mode 100644 arm_compute/graph/nodes/DequantizationLayer.h create mode 100644 arm_compute/graph/nodes/FlattenLayer.h create mode 100644 arm_compute/graph/nodes/QuantizationLayer.h create mode 100644 arm_compute/graph/nodes/ReshapeLayer.h (limited to 'arm_compute/graph') diff --git a/arm_compute/graph/Nodes.h b/arm_compute/graph/Nodes.h index d1ed715ae8..79407f9ab3 100644 --- a/arm_compute/graph/Nodes.h +++ b/arm_compute/graph/Nodes.h @@ -28,11 +28,16 @@ #include "arm_compute/graph/nodes/BatchNormalizationLayer.h" #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/DequantizationLayer.h" +#include "arm_compute/graph/nodes/FlattenLayer.h" #include "arm_compute/graph/nodes/FloorLayer.h" #include "arm_compute/graph/nodes/FullyConnectedLayer.h" #include "arm_compute/graph/nodes/L2NormalizeLayer.h" #include "arm_compute/graph/nodes/NormalizationLayer.h" #include "arm_compute/graph/nodes/PoolingLayer.h" +#include "arm_compute/graph/nodes/QuantizationLayer.h" +#include "arm_compute/graph/nodes/ReshapeLayer.h" #include "arm_compute/graph/nodes/SoftmaxLayer.h" #endif /* __ARM_COMPUTE_GRAPH_NODES_H__ */ diff --git a/arm_compute/graph/Types.h b/arm_compute/graph/Types.h index 662a7404ef..b3aa034477 100644 --- a/arm_compute/graph/Types.h +++ b/arm_compute/graph/Types.h @@ -55,6 +55,7 @@ using arm_compute::TensorShape; using arm_compute::WeightsInfo; using arm_compute::logging::LogLevel; +using arm_compute::ConvertPolicy; /**< Execution hint to the graph executor */ enum class TargetHint @@ -77,11 +78,16 @@ enum class OperationType ActivationLayer, BatchNormalizationLayer, ConvolutionLayer, + DepthConvertLayer, + DequantizationLayer, + FlattenLayer, FloorLayer, FullyConnectedLayer, L2NormalizeLayer, NormalizationLayer, PoolingLayer, + QuantizationLayer, + ReshapeLayer, SoftmaxLayer }; diff --git a/arm_compute/graph/nodes/DepthConvertLayer.h b/arm_compute/graph/nodes/DepthConvertLayer.h new file mode 100644 index 0000000000..03bf9b7ed5 --- /dev/null +++ b/arm_compute/graph/nodes/DepthConvertLayer.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2017 ARM Limited. + * + * SPDX-License-Identifier: MIT + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef __ARM_COMPUTE_GRAPH_DEPTHCONVERT_LAYER_H__ +#define __ARM_COMPUTE_GRAPH_DEPTHCONVERT_LAYER_H__ + +#include "arm_compute/graph/GraphContext.h" +#include "arm_compute/graph/INode.h" +#include "arm_compute/graph/ITensorObject.h" +#include "arm_compute/graph/Types.h" + +namespace arm_compute +{ +namespace graph +{ +/** DepthConvertLayer layer node */ +class DepthConvertLayer final : public INode +{ +public: + /** Default constructor + * + * @param[in] policy Convertion policy + * @param[in] shift Shift value + * @param[in] output_datatype Output datatype + */ + DepthConvertLayer(const ConvertPolicy policy, uint32_t shift, DataType output_datatype); + + // Inherited methods overriden: + std::unique_ptr instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output) override; + +private: + const ConvertPolicy _policy; + uint32_t _shift; + DataType _output_datatype; +}; +} // namespace graph +} // namespace arm_compute +#endif /* __ARM_COMPUTE_GRAPH_DEPTHCONVERT_LAYER_H__ */ diff --git a/arm_compute/graph/nodes/DequantizationLayer.h b/arm_compute/graph/nodes/DequantizationLayer.h new file mode 100644 index 0000000000..f9b7e8af87 --- /dev/null +++ b/arm_compute/graph/nodes/DequantizationLayer.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2017 ARM Limited. + * + * SPDX-License-Identifier: MIT + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef __ARM_COMPUTE_GRAPH_DEQUANTIZATION_LAYER_H__ +#define __ARM_COMPUTE_GRAPH_DEQUANTIZATION_LAYER_H__ + +#include "arm_compute/graph/GraphContext.h" +#include "arm_compute/graph/INode.h" +#include "arm_compute/graph/ITensorObject.h" +#include "arm_compute/graph/Tensor.h" +#include "arm_compute/graph/Types.h" + +namespace arm_compute +{ +namespace graph +{ +/** DequantizationLayer layer node */ +class DequantizationLayer final : public INode +{ +public: + /** Default constructor + * + * @param[in] min_max Min max value tensor + */ + template + DequantizationLayer(AccessorType &&min_max) + : _min_max(std::move(min_max)) + { + } + + // Inherited methods overriden: + std::unique_ptr instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output) override; + +private: + Tensor _min_max; +}; +} // namespace graph +} // namespace arm_compute +#endif /* __ARM_COMPUTE_GRAPH_DEQUANTIZATION_LAYER_H__ */ diff --git a/arm_compute/graph/nodes/FlattenLayer.h b/arm_compute/graph/nodes/FlattenLayer.h new file mode 100644 index 0000000000..c5f51a2b3e --- /dev/null +++ b/arm_compute/graph/nodes/FlattenLayer.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2017 ARM Limited. + * + * SPDX-License-Identifier: MIT + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef __ARM_COMPUTE_GRAPH_FLATTEN_LAYER_H__ +#define __ARM_COMPUTE_GRAPH_FLATTEN_LAYER_H__ + +#include "arm_compute/graph/GraphContext.h" +#include "arm_compute/graph/INode.h" +#include "arm_compute/graph/ITensorObject.h" +#include "arm_compute/graph/Types.h" + +namespace arm_compute +{ +namespace graph +{ +/** Flatten layer node */ +class FlattenLayer final : public INode +{ +public: + // Inherited methods overriden: + std::unique_ptr instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output) override; +}; +} // namespace graph +} // namespace arm_compute +#endif /* __ARM_COMPUTE_GRAPH_FLATTEN_LAYER_H__ */ diff --git a/arm_compute/graph/nodes/FloorLayer.h b/arm_compute/graph/nodes/FloorLayer.h index f88a5b9d94..146e2c16dd 100644 --- a/arm_compute/graph/nodes/FloorLayer.h +++ b/arm_compute/graph/nodes/FloorLayer.h @@ -33,7 +33,7 @@ namespace arm_compute namespace graph { /** Floor layer node */ -class FloorLayer : public INode +class FloorLayer final : public INode { public: // Inherited methods overriden: diff --git a/arm_compute/graph/nodes/QuantizationLayer.h b/arm_compute/graph/nodes/QuantizationLayer.h new file mode 100644 index 0000000000..a3ef02530e --- /dev/null +++ b/arm_compute/graph/nodes/QuantizationLayer.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2017 ARM Limited. + * + * SPDX-License-Identifier: MIT + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef __ARM_COMPUTE_GRAPH_QUANTIZATION_LAYER_H__ +#define __ARM_COMPUTE_GRAPH_QUANTIZATION_LAYER_H__ + +#include "arm_compute/graph/GraphContext.h" +#include "arm_compute/graph/INode.h" +#include "arm_compute/graph/ITensorObject.h" +#include "arm_compute/graph/Types.h" + +namespace arm_compute +{ +namespace graph +{ +/** Quantization layer node */ +class QuantizationLayer final : public INode +{ +public: + // Inherited methods overriden: + std::unique_ptr instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output) override; +}; +} // namespace graph +} // namespace arm_compute +#endif /* __ARM_COMPUTE_GRAPH_QUANTIZATION_LAYER_H__ */ diff --git a/arm_compute/graph/nodes/ReshapeLayer.h b/arm_compute/graph/nodes/ReshapeLayer.h new file mode 100644 index 0000000000..b727d33a2c --- /dev/null +++ b/arm_compute/graph/nodes/ReshapeLayer.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2017 ARM Limited. + * + * SPDX-License-Identifier: MIT + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef __ARM_COMPUTE_GRAPH_RESHAPE_LAYER_H__ +#define __ARM_COMPUTE_GRAPH_RESHAPE_LAYER_H__ + +#include "arm_compute/graph/GraphContext.h" +#include "arm_compute/graph/INode.h" +#include "arm_compute/graph/ITensorObject.h" +#include "arm_compute/graph/Types.h" + +namespace arm_compute +{ +namespace graph +{ +/** Reshape layer node */ +class ReshapeLayer final : public INode +{ +public: + /** Default constructor + * + * @param[in] shape Output shape + */ + ReshapeLayer(const TensorShape shape); + + // Inherited methods overriden: + std::unique_ptr instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output) override; + +private: + TensorShape _shape; +}; +} // namespace graph +} // namespace arm_compute +#endif /* __ARM_COMPUTE_GRAPH_RESHAPE_LAYER_H__ */ -- cgit v1.2.1