hswish_fusion.hpp
1 // Copyright (C) 2018-2021 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4 
5 #pragma once
6 
7 #include <memory>
8 #include <utility>
9 
10 #include <transformations_visibility.hpp>
11 #include <ngraph/pass/graph_rewrite.hpp>
12 
13 namespace ngraph {
14 namespace pass {
15 
16 class TRANSFORMATIONS_API HSwishFusion;
17 class TRANSFORMATIONS_API HSwishFusionWithReluDiv;
18 class TRANSFORMATIONS_API HSwishFusionWithReluMul;
19 class TRANSFORMATIONS_API HSwishFusionWithoutRelu;
20 class TRANSFORMATIONS_API HSwishFusionWithClampMul;
21 class TRANSFORMATIONS_API HSwishFusionWithClampDiv;
22 class TRANSFORMATIONS_API HSwishFusionWithHSigmoidMul;
23 
24 
25 } // namespace pass
26 } // namespace ngraph
27 
28 /**
29  * @ingroup ie_transformation_common_api
30  * @brief HSwishFusion transformation replaces a sub-graph (x * (min(Relu(x + 3), 6))) / 6 with a HSwish op.
31  */
32 class ngraph::pass::HSwishFusionWithReluDiv: public ngraph::pass::MatcherPass {
33 public:
34  NGRAPH_RTTI_DECLARATION;
36 };
37 
38 /**
39  * @ingroup ie_transformation_common_api
40  * @brief HSwishFusion transformation replaces a sub-graph (x * (min(Relu(x + 3), 6)) * const(1/6) with a HSwish op.
41  */
42 class ngraph::pass::HSwishFusionWithReluMul: public ngraph::pass::MatcherPass {
43 public:
44  NGRAPH_RTTI_DECLARATION;
46 };
47 
48 /**
49  * @ingroup ie_transformation_common_api
50  * @brief HSwishFusion transformation replaces a sub-graph x * (min(max(x + 3, 0), 6) / 6) with a HSwish op.
51  */
52 class ngraph::pass::HSwishFusionWithoutRelu: public ngraph::pass::MatcherPass {
53 public:
54  NGRAPH_RTTI_DECLARATION;
56 };
57 
58 /**
59  * @ingroup ie_transformation_common_api
60  * @brief HSwishFusion transformation replaces a sub-graph x * (Clamp(x + 3, 0, 6) * const(1/6)) with a HSwish op.
61  */
62 class ngraph::pass::HSwishFusionWithClampMul: public ngraph::pass::MatcherPass {
63 public:
64  NGRAPH_RTTI_DECLARATION;
66 };
67 
68 /**
69  * @ingroup ie_transformation_common_api
70  * @brief HSwishFusion transformation replaces a sub-graph x * (Clamp(x + 3, 0, 6) / 6) with a HSwish op.
71  */
72 class ngraph::pass::HSwishFusionWithClampDiv: public ngraph::pass::MatcherPass {
73 public:
74  NGRAPH_RTTI_DECLARATION;
76 };
77 
78 /**
79  * @ingroup ie_transformation_common_api
80  * @brief HSwishFusion transformation replaces a sub-graph x * HSigmoid(x) with a HSwish op.
81  */
82 class ngraph::pass::HSwishFusionWithHSigmoidMul: public ngraph::pass::MatcherPass {
83 public:
84  NGRAPH_RTTI_DECLARATION;
86 };
87 
88 /**
89  * @ingroup ie_transformation_common_api
90  * @brief HSwishFusion transformation replaces various sub-graphs with a HSwish op.
91  */
92 class ngraph::pass::HSwishFusion: public ngraph::pass::GraphRewrite {
93 public:
94  NGRAPH_RTTI_DECLARATION;
95  HSwishFusion() {
96  add_matcher<ngraph::pass::HSwishFusionWithReluDiv>();
97  add_matcher<ngraph::pass::HSwishFusionWithReluMul>();
98  add_matcher<ngraph::pass::HSwishFusionWithoutRelu>();
99  add_matcher<ngraph::pass::HSwishFusionWithClampMul>();
100  add_matcher<ngraph::pass::HSwishFusionWithClampDiv>();
101  add_matcher<ngraph::pass::HSwishFusionWithHSigmoidMul>();
102  }
103 };
HSwishFusion transformation replaces a sub-graph x * (Clamp(x + 3, 0, 6) / 6) with a HSwish op.
Definition: hswish_fusion.hpp:72
HSwishFusion transformation replaces a sub-graph x * (Clamp(x + 3, 0, 6) * const(1/6)) with a HSwish ...
Definition: hswish_fusion.hpp:62
HSwishFusion transformation replaces a sub-graph x * HSigmoid(x) with a HSwish op.
Definition: hswish_fusion.hpp:82
HSwishFusion transformation replaces a sub-graph (x * (min(Relu(x + 3), 6))) / 6 with a HSwish op.
Definition: hswish_fusion.hpp:32
HSwishFusion transformation replaces a sub-graph (x * (min(Relu(x + 3), 6)) * const(1/6) with a HSwis...
Definition: hswish_fusion.hpp:42
HSwishFusion transformation replaces a sub-graph x * (min(max(x + 3, 0), 6) / 6) with a HSwish op.
Definition: hswish_fusion.hpp:52
HSwishFusion transformation replaces various sub-graphs with a HSwish op.
Definition: hswish_fusion.hpp:92
ngraph namespace
Definition: add_fake_quantize_fusion.hpp:14