pad_fusion.hpp
1 // Copyright (C) 2018-2021 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4 
5 #pragma once
6 
7 #include <transformations_visibility.hpp>
8 
9 #include <ngraph/pass/graph_rewrite.hpp>
10 
11 namespace ngraph {
12 namespace pass {
13 
14 class TRANSFORMATIONS_API PadFusion;
15 class TRANSFORMATIONS_API PadFusionAvgPool;
16 class TRANSFORMATIONS_API PadFusionMaxPool;
17 class TRANSFORMATIONS_API PadFusionConvolution;
18 class TRANSFORMATIONS_API PadFusionConvolutionBackpropData;
19 class TRANSFORMATIONS_API PadFusionGroupConvolution;
20 class TRANSFORMATIONS_API PadFusionGroupConvolutionBackpropData;
21 
22 } // namespace pass
23 } // namespace ngraph
24 
25 /**
26  * @ingroup ie_transformation_common_api
27  * @brief PadFusion transformation replaces following graph:
28  * Pad -> AvgPool to AvgPool, under following conditions
29  * - pad mode is op::PadMode::CONSTANT
30  * - pad value is 0
31  * - exclude_pad in AvgPool is set to false or pads_begin, pads_end are set to zero
32  */
33 class ngraph::pass::PadFusionAvgPool: public ngraph::pass::MatcherPass {
34 public:
35  NGRAPH_RTTI_DECLARATION;
37 };
38 
39 /**
40  * @ingroup ie_transformation_common_api
41  * @brief PadFusion transformation replaces following graph:
42  * Pad -> MaxPool to MaxPool, under following conditions
43  * - pad mode is op::PadMode::CONSTANT
44  * - pad value is 0
45  */
46 class ngraph::pass::PadFusionMaxPool: public ngraph::pass::MatcherPass {
47 public:
48  NGRAPH_RTTI_DECLARATION;
50 };
51 
52 /**
53  * @ingroup ie_transformation_common_api
54  * @brief PadFusion transformation replaces following graph:
55  * Pad -> Convolution to Convolution, under following conditions
56  * - pad mode is op::PadMode::CONSTANT
57  * - pad value is 0
58  */
59 class ngraph::pass::PadFusionConvolution: public ngraph::pass::MatcherPass {
60 public:
61  NGRAPH_RTTI_DECLARATION;
63 };
64 
65 /**
66  * @ingroup ie_transformation_common_api
67  * @brief PadFusion transformation replaces following graph:
68  * Pad -> ConvolutionBackpropData to ConvolutionBackpropData, under following conditions
69  * - pad mode is op::PadMode::CONSTANT
70  * - pad value is 0
71  * - pads in ConvolutionBackpropData are greater than pads in Pad node
72  */
73 class ngraph::pass::PadFusionConvolutionBackpropData: public ngraph::pass::MatcherPass {
74 public:
75  NGRAPH_RTTI_DECLARATION;
77 };
78 
79 /**
80  * @ingroup ie_transformation_common_api
81  * @brief PadFusion transformation replaces following graph:
82  * Pad -> GroupConvolution to GroupConvolution, under following conditions
83  * - pad mode is op::PadMode::CONSTANT
84  * - pad value is 0
85  */
86 class ngraph::pass::PadFusionGroupConvolution: public ngraph::pass::MatcherPass {
87 public:
88  NGRAPH_RTTI_DECLARATION;
90 };
91 
92 /**
93  * @ingroup ie_transformation_common_api
94  * @brief PadFusion transformation replaces following graph:
95  * Pad -> GroupConvolutionBackpropData to GroupConvolutionBackpropData, under following conditions
96  * - pad mode is op::PadMode::CONSTANT
97  * - pad value is 0
98  * - pads in GroupConvolutionBackpropData are greater than pads in Pad node
99  */
100 class ngraph::pass::PadFusionGroupConvolutionBackpropData: public ngraph::pass::MatcherPass {
101 public:
102  NGRAPH_RTTI_DECLARATION;
104 };
105 
106 class ngraph::pass::PadFusion: public ngraph::pass::GraphRewrite {
107 public:
108  NGRAPH_RTTI_DECLARATION;
109  PadFusion() {
110  add_matcher<ngraph::pass::PadFusionAvgPool>();
111  add_matcher<ngraph::pass::PadFusionMaxPool>();
112  add_matcher<ngraph::pass::PadFusionConvolution>();
113  add_matcher<ngraph::pass::PadFusionConvolutionBackpropData>();
114  add_matcher<ngraph::pass::PadFusionGroupConvolution>();
115  add_matcher<ngraph::pass::PadFusionGroupConvolutionBackpropData>();
116  }
117 };
PadFusion transformation replaces following graph: Pad -> AvgPool to AvgPool, under following conditi...
Definition: pad_fusion.hpp:33
PadFusion transformation replaces following graph: Pad -> ConvolutionBackpropData to ConvolutionBackp...
Definition: pad_fusion.hpp:73
PadFusion transformation replaces following graph: Pad -> Convolution to Convolution,...
Definition: pad_fusion.hpp:59
PadFusion transformation replaces following graph: Pad -> GroupConvolutionBackpropData to GroupConvol...
Definition: pad_fusion.hpp:100
PadFusion transformation replaces following graph: Pad -> GroupConvolution to GroupConvolution,...
Definition: pad_fusion.hpp:86
PadFusion transformation replaces following graph: Pad -> MaxPool to MaxPool, under following conditi...
Definition: pad_fusion.hpp:46
Definition: pad_fusion.hpp:106
ngraph namespace
Definition: add_fake_quantize_fusion.hpp:14