ArmNN
 22.11
ReshapeLayer.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 
10 
11 namespace armnn
12 {
13 
14 /// This layer represents a reshape operation.
15 class ReshapeLayer : public LayerWithParameters<ReshapeDescriptor>
16 {
17 public:
18  /// Makes a workload for the Reshape type.
19  /// @param [in] graph The graph where this layer can be found.
20  /// @param [in] factory The workload factory which will create the workload.
21  /// @return A pointer to the created workload, or nullptr if not created.
22  virtual std::unique_ptr<IWorkload> CreateWorkload(const IWorkloadFactory& factory) const override;
23 
24  /// Creates a dynamically-allocated copy of this layer.
25  /// @param [in] graph The graph into which this layer is being cloned.
26  ReshapeLayer* Clone(Graph& graph) const override;
27 
28  /// Check if the input tensor shape(s)
29  /// will lead to a valid configuration of @ref ReshapeLayer.
30  /// @param [in] shapeInferenceMethod Indicates if output shape shall be overwritten or just validated.
31  void ValidateTensorShapesFromInputs() override;
32 
33  /// By default returns inputShapes if the number of inputs are equal to number of outputs,
34  /// otherwise infers the output shapes from given input shapes and layer properties.
35  /// @param [in] inputShapes The input shapes layer has.
36  /// @return A vector to the inferred output shape.
37  std::vector<TensorShape> InferOutputShapes(const std::vector<TensorShape>& inputShapes) const override;
38 
39  /// Indicates if the other layer received is equal to this one.
40  /// @param other The other layer to be compared with.
41  /// @return true if other layer is equal to this false otherwise.
42  bool IsEqual(const Layer& other) const
43  {
44  return (other.GetType() == LayerType::Reshape) &&
45  m_Param.m_TargetShape == PolymorphicDowncast<const ReshapeLayer*>(&other)->m_Param.m_TargetShape;
46  }
47 
48  void ExecuteStrategy(IStrategy& strategy) const override;
49 
50 
51 protected:
52  /// Constructor to create a ReshapeLayer.
53  /// @param [in] param ReshapeDescriptor to configure the reshape operation.
54  /// @param [in] name Optional name for the layer.
55  ReshapeLayer(const ReshapeDescriptor& desc, const char* name);
56 
57  /// Default destructor
58  ~ReshapeLayer() = default;
59 };
60 
61 } // namespace
~ReshapeLayer()=default
Default destructor.
ReshapeDescriptor m_Param
The parameters for the layer (not including tensor-valued weights etc.).
virtual std::unique_ptr< IWorkload > CreateWorkload(const IWorkloadFactory &factory) const override
Makes a workload for the Reshape type.
A ReshapeDescriptor for the ReshapeLayer.
bool IsEqual(const Layer &other) const
Indicates if the other layer received is equal to this one.
This layer represents a reshape operation.
ReshapeLayer * Clone(Graph &graph) const override
Creates a dynamically-allocated copy of this layer.
Copyright (c) 2021 ARM Limited and Contributors.
TensorShape m_TargetShape
Target shape value.
LayerType GetType() const override
Returns the armnn::LayerType of this layer.
Definition: Layer.hpp:273
ReshapeLayer(const ReshapeDescriptor &desc, const char *name)
Constructor to create a ReshapeLayer.
void ValidateTensorShapesFromInputs() override
Check if the input tensor shape(s) will lead to a valid configuration of ReshapeLayer.
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.
void ExecuteStrategy(IStrategy &strategy) const override
Apply a visitor to this layer.