ArmNN
 21.11
DepthwiseConvolution2dLayer.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6 
8 
9 namespace armnn
10 {
11 
12 class ScopedTensorHandle;
13 
14 /// This layer represents a depthwise convolution 2d operation.
15 class DepthwiseConvolution2dLayer : public LayerWithParameters<DepthwiseConvolution2dDescriptor>
16 {
17 public:
18  /// A unique pointer to store Weight values.
19  std::shared_ptr<ConstTensorHandle> m_Weight;
20  /// A unique pointer to store Bias values.
21  std::shared_ptr<ConstTensorHandle> m_Bias;
22 
23  /// Makes a workload for the DepthwiseConvolution2d type.
24  /// @param [in] graph The graph where this layer can be found.
25  /// @param [in] factory The workload factory which will create the workload.
26  /// @return A pointer to the created workload, or nullptr if not created.
27  virtual std::unique_ptr<IWorkload> CreateWorkload(const IWorkloadFactory& factory) const override;
28 
29  /// Creates a dynamically-allocated copy of this layer.
30  /// @param [in] graph The graph into which this layer is being cloned.
31  DepthwiseConvolution2dLayer* Clone(Graph& graph) const override;
32 
33  /// Check if the input tensor shape(s)
34  /// will lead to a valid configuration of @ref DepthwiseConvolution2dLayer.
35  /// @param [in] shapeInferenceMethod Indicates if output shape shall be overwritten or just validated.
36  void ValidateTensorShapesFromInputs() override;
37 
38  /// By default returns inputShapes if the number of inputs are equal to number of outputs,
39  /// otherwise infers the output shapes from given input shapes and layer properties.
40  /// @param [in] inputShapes The input shapes layer has.
41  /// @return A vector to the inferred output shape.
42  std::vector<TensorShape> InferOutputShapes(const std::vector<TensorShape>& inputShapes) const override;
43 
45  void Accept(ILayerVisitor& visitor) const override;
47 
48  void ExecuteStrategy(IStrategy& strategy) const override;
49 
51 
52 protected:
53  /// Constructor to create a DepthwiseConvolution2dLayer.
54  /// @param [in] param DepthwiseConvolution2dDescriptor to configure the depthwise convolution2d.
55  /// @param [in] name Optional name for the layer.
56  DepthwiseConvolution2dLayer(const DepthwiseConvolution2dDescriptor& param, const char* name);
57 
58  /// Default destructor
59  ~DepthwiseConvolution2dLayer() = default;
60 
61  /// Retrieve the handles to the constant values stored by the layer.
62  /// @return A vector of the constant tensors stored by this layer.
64 };
65 
66 } // namespace
std::vector< TensorShape > InferOutputShapes(const std::vector< TensorShape > &inputShapes) const override
By default returns inputShapes if the number of inputs are equal to number of outputs, otherwise infers the output shapes from given input shapes and layer properties.
virtual std::unique_ptr< IWorkload > CreateWorkload(const IWorkloadFactory &factory) const override
Makes a workload for the DepthwiseConvolution2d type.
DepthwiseConvolution2dLayer * Clone(Graph &graph) const override
Creates a dynamically-allocated copy of this layer.
#define ARMNN_NO_DEPRECATE_WARN_BEGIN
Definition: Deprecated.hpp:33
This layer represents a depthwise convolution 2d operation.
ARMNN_NO_DEPRECATE_WARN_END void ExecuteStrategy(IStrategy &strategy) const override
Apply a visitor to this layer.
ConstantTensors GetConstantTensorsByRef() override
Retrieve the handles to the constant values stored by the layer.
Copyright (c) 2021 ARM Limited and Contributors.
void ValidateTensorShapesFromInputs() override
Check if the input tensor shape(s) will lead to a valid configuration of DepthwiseConvolution2dLayer...
void SerializeLayerParameters(ParameterStringifyFunction &fn) const override
Helper to serialize the layer parameters to string.
std::vector< std::reference_wrapper< std::shared_ptr< ConstTensorHandle > >> ConstantTensors
Definition: Layer.hpp:393
#define ARMNN_NO_DEPRECATE_WARN_END
Definition: Deprecated.hpp:34
DepthwiseConvolution2dLayer(const DepthwiseConvolution2dDescriptor &param, const char *name)
Constructor to create a DepthwiseConvolution2dLayer.
std::shared_ptr< ConstTensorHandle > m_Bias
A unique pointer to store Bias values.
ARMNN_NO_DEPRECATE_WARN_BEGIN void Accept(ILayerVisitor &visitor) const override
~DepthwiseConvolution2dLayer()=default
Default destructor.
std::shared_ptr< ConstTensorHandle > m_Weight
A unique pointer to store Weight values.
std::function< void(const std::string &name, const std::string &value)> ParameterStringifyFunction
A DepthwiseConvolution2dDescriptor for the DepthwiseConvolution2dLayer.