swish_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 SwishFusion;
17 class TRANSFORMATIONS_API SwishFusionWithSigmoid;
18 class TRANSFORMATIONS_API SwishFusionWithSigmoidWithBeta;
19 class TRANSFORMATIONS_API SwishFusionWithBeta;
20 class TRANSFORMATIONS_API SwishFusionWithoutBeta;
21 
22 } // namespace pass
23 } // namespace ngraph
24 
25 /**
26  * @ingroup ie_transformation_common_api
27  * @brief SwishFusionWithSigmoid replaces a sub-graphs x * Sigmoid(x) with a Swish op.
28  */
29 class ngraph::pass::SwishFusionWithSigmoid: public ngraph::pass::MatcherPass {
30 public:
31  NGRAPH_RTTI_DECLARATION;
33 };
34 
35 /**
36  * @ingroup ie_transformation_common_api
37  * @brief SwishFusionWithSigmoid replaces a sub-graphs x * Sigmoid(x * beta) with a Swish op.
38  */
39 class ngraph::pass::SwishFusionWithSigmoidWithBeta: public ngraph::pass::MatcherPass {
40 public:
41  NGRAPH_RTTI_DECLARATION;
43 };
44 
45 /**
46  * @ingroup ie_transformation_common_api
47  * @brief SwishFusionWithSigmoid replaces a sub-graphs x / (1.0 + exp(-x * beta)) with a Swish op.
48  */
49 class ngraph::pass::SwishFusionWithBeta: public ngraph::pass::MatcherPass {
50 public:
51  NGRAPH_RTTI_DECLARATION;
53 };
54 
55 /**
56  * @ingroup ie_transformation_common_api
57  * @brief SwishFusionWithSigmoid replaces a sub-graphs x / (1.0 + exp(-x)) with a Swish op.
58  */
59 class ngraph::pass::SwishFusionWithoutBeta: public ngraph::pass::MatcherPass {
60 public:
61  NGRAPH_RTTI_DECLARATION;
63 };
64 
65 /**
66  * @ingroup ie_transformation_common_api
67  * @brief SwishFusion transformation replaces various sub-graphs with a Swish op.
68  */
69 class ngraph::pass::SwishFusion: public ngraph::pass::GraphRewrite {
70 public:
71  NGRAPH_RTTI_DECLARATION;
72  SwishFusion() {
73  add_matcher<ngraph::pass::SwishFusionWithSigmoid>();
74  add_matcher<ngraph::pass::SwishFusionWithSigmoidWithBeta>();
75  add_matcher<ngraph::pass::SwishFusionWithBeta>();
76  add_matcher<ngraph::pass::SwishFusionWithoutBeta>();
77  }
78 };
SwishFusionWithSigmoid replaces a sub-graphs x / (1.0 + exp(-x * beta)) with a Swish op.
Definition: swish_fusion.hpp:49
SwishFusionWithSigmoid replaces a sub-graphs x * Sigmoid(x * beta) with a Swish op.
Definition: swish_fusion.hpp:39
SwishFusionWithSigmoid replaces a sub-graphs x * Sigmoid(x) with a Swish op.
Definition: swish_fusion.hpp:29
SwishFusionWithSigmoid replaces a sub-graphs x / (1.0 + exp(-x)) with a Swish op.
Definition: swish_fusion.hpp:59
SwishFusion transformation replaces various sub-graphs with a Swish op.
Definition: swish_fusion.hpp:69
ngraph namespace
Definition: add_fake_quantize_fusion.hpp:14