ArmNN  NotReleased
StaticRangeVisitor.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #pragma once
7 
9 #include "RangeTracker.hpp"
10 
11 #include <armnn/INetwork.hpp>
13 
14 
15 namespace armnn
16 {
17 
19 class StaticRangeVisitor : public LayerVisitorBase<VisitorNoThrowPolicy>
20 {
21 public:
22  StaticRangeVisitor(RangeTracker& rangeTracker);
23  ~StaticRangeVisitor() = default;
24 
26  void VisitAdditionLayer(const IConnectableLayer* layer, const char* name = nullptr) override;
27 
29  const BatchNormalizationDescriptor& desc,
30  const ConstTensor& mean,
31  const ConstTensor& variance,
32  const ConstTensor& beta,
33  const ConstTensor& gamma,
34  const char* name = nullptr) override;
35 
37  const Convolution2dDescriptor& convolution2dDescriptor,
38  const ConstTensor& weights,
39  const Optional<ConstTensor>& biases,
40  const char* name = nullptr) override;
41 
44  const ConstTensor& weights,
45  const Optional<ConstTensor>& biases,
46  const char* name = nullptr) override;
47 
48  void VisitActivationLayer(const IConnectableLayer* layer,
49  const ActivationDescriptor& activationDescriptor,
50  const char* name = nullptr) override;
51 
53  const FullyConnectedDescriptor& desc,
54  const ConstTensor& weights,
55  const Optional<ConstTensor>& biases,
56  const char *name) override;
57 
58  void VisitPermuteLayer(const IConnectableLayer* layer,
59  const PermuteDescriptor& permuteDescriptor,
60  const char* name) override;
61 
63  const SpaceToBatchNdDescriptor& spaceToBatchNdDescriptor,
64  const char* name = nullptr) override;
65 
66  void VisitPooling2dLayer(const IConnectableLayer* layer,
67  const Pooling2dDescriptor& pooling2dDescriptor,
68  const char* name) override;
69 
70  void VisitSoftmaxLayer(const IConnectableLayer* layer,
71  const SoftmaxDescriptor& softmaxDescriptor,
72  const char* name = nullptr) override;
73 
74  void VisitConcatLayer(const IConnectableLayer* layer,
75  const OriginsDescriptor& originsDescriptor,
76  const char* name = nullptr) override;
77 
78  void VisitConstantLayer(const IConnectableLayer* layer,
79  const ConstTensor& input,
80  const char* name = nullptr) override;
81 
82  void VisitReshapeLayer(const IConnectableLayer* layer,
83  const ReshapeDescriptor& reshapeDescriptor,
84  const char* name = nullptr) override;
85 
86  void VisitSplitterLayer(const IConnectableLayer* layer,
87  const SplitterDescriptor& splitterDescriptor,
88  const char* name = nullptr) override;
89 
91  const ResizeBilinearDescriptor& resizeDesc,
92  const char* name = nullptr) override;
93 
94  void VisitResizeLayer(const IConnectableLayer* layer,
95  const ResizeDescriptor& resizeDescriptor,
96  const char* name = nullptr) override;
97 
98  void VisitStridedSliceLayer(const IConnectableLayer* layer,
99  const StridedSliceDescriptor& stridedSliceDescriptor,
100  const char* name = nullptr) override;
101 
103  const BatchToSpaceNdDescriptor& batchToSpaceNdDescriptor,
104  const char* name = nullptr) override;
105 
106 private:
108  void SetRange(const IConnectableLayer* layer, unsigned int outputIdx, float min, float max);
109 
110  void ForwardParentParameters(const IConnectableLayer* layer);
111 
113  RangeTracker& m_RangeTracker;
114 };
115 
116 } //namespace armnn
A BatchToSpaceNdDescriptor for the BatchToSpaceNdLayer.
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
Definition: Tensor.hpp:199
void VisitReshapeLayer(const IConnectableLayer *layer, const ReshapeDescriptor &reshapeDescriptor, const char *name=nullptr) override
void VisitActivationLayer(const IConnectableLayer *layer, const ActivationDescriptor &activationDescriptor, const char *name=nullptr) override
void VisitStridedSliceLayer(const IConnectableLayer *layer, const StridedSliceDescriptor &stridedSliceDescriptor, const char *name=nullptr) override
void VisitDepthwiseConvolution2dLayer(const IConnectableLayer *layer, const DepthwiseConvolution2dDescriptor &desc, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr) override
An ActivationDescriptor for the ActivationLayer.
Definition: Descriptors.hpp:20
A BatchNormalizationDescriptor for the BatchNormalizationLayer.
void VisitPermuteLayer(const IConnectableLayer *layer, const PermuteDescriptor &permuteDescriptor, const char *name) override
void VisitSoftmaxLayer(const IConnectableLayer *layer, const SoftmaxDescriptor &softmaxDescriptor, const char *name=nullptr) override
A ViewsDescriptor for the SplitterLayer. Descriptor to configure the splitting process. Number of Views must be equal to the number of outputs, and their order must match - e.g. first view corresponds to the first output, second view to the second output, etc.
void VisitResizeLayer(const IConnectableLayer *layer, const ResizeDescriptor &resizeDescriptor, const char *name=nullptr) override
void VisitBatchToSpaceNdLayer(const IConnectableLayer *layer, const BatchToSpaceNdDescriptor &batchToSpaceNdDescriptor, const char *name=nullptr) override
void VisitSpaceToBatchNdLayer(const IConnectableLayer *layer, const SpaceToBatchNdDescriptor &spaceToBatchNdDescriptor, const char *name=nullptr) override
void VisitFullyConnectedLayer(const IConnectableLayer *layer, const FullyConnectedDescriptor &desc, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name) override
A ReshapeDescriptor for the ReshapeLayer.
void VisitConvolution2dLayer(const IConnectableLayer *layer, const Convolution2dDescriptor &convolution2dDescriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr) override
void VisitResizeBilinearLayer(const IConnectableLayer *layer, const ResizeBilinearDescriptor &resizeDesc, const char *name=nullptr) override
void VisitConstantLayer(const IConnectableLayer *layer, const ConstTensor &input, const char *name=nullptr) override
void VisitAdditionLayer(const IConnectableLayer *layer, const char *name=nullptr) override
Functions to set the Range on a per-layer-type basis.
Visitor class to establish min/max ranges based on the type of the layer.
A FullyConnectedDescriptor for the FullyConnectedLayer.
void VisitConcatLayer(const IConnectableLayer *layer, const OriginsDescriptor &originsDescriptor, const char *name=nullptr) override
A ResizeBilinearDescriptor for the ResizeBilinearLayer.
A SoftmaxDescriptor for the SoftmaxLayer.
void VisitSplitterLayer(const IConnectableLayer *layer, const SplitterDescriptor &splitterDescriptor, const char *name=nullptr) override
void VisitPooling2dLayer(const IConnectableLayer *layer, const Pooling2dDescriptor &pooling2dDescriptor, const char *name) override
StaticRangeVisitor(RangeTracker &rangeTracker)
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
Definition: INetwork.hpp:61
A Pooling2dDescriptor for the Pooling2dLayer.
void VisitBatchNormalizationLayer(const IConnectableLayer *layer, const BatchNormalizationDescriptor &desc, const ConstTensor &mean, const ConstTensor &variance, const ConstTensor &beta, const ConstTensor &gamma, const char *name=nullptr) override
A DepthwiseConvolution2dDescriptor for the DepthwiseConvolution2dLayer.
A PermuteDescriptor for the PermuteLayer.
A Convolution2dDescriptor for the Convolution2dLayer.
A SpaceToBatchNdDescriptor for the SpaceToBatchNdLayer.
A ResizeDescriptor for the ResizeLayer.
An OriginsDescriptor for the ConcatLayer. Descriptor to configure the concatenation process...
A StridedSliceDescriptor for the StridedSliceLayer.