1 // Copyright (C) 2020 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
9 #include <ngraph/ngraph.hpp>
10 #include "low_precision/layer_transformation.hpp"
11 #include "common/fake_quantize_on_data.hpp"
12 #include "common/dequantization_operations.hpp"
18 class ConcatFunction {
20 static std::shared_ptr<ngraph::Function> getOriginal(
21 const ngraph::element::Type precision,
22 const ngraph::Shape& inputShape,
23 const FakeQuantizeOnData& fakeQuantize1,
24 const FakeQuantizeOnData& fakeQuantize2);
26 static std::shared_ptr<ngraph::Function> getOriginalWithNeighbors(
27 const ngraph::element::Type precision,
28 const ngraph::Shape& inputShape,
29 const FakeQuantizeOnData& fqOnData1,
30 const FakeQuantizeOnData& fqOnData2,
31 const FakeQuantizeOnData& fqOnData3);
33 static std::shared_ptr<ngraph::Function> getOriginalWithIntermediate(
34 const ngraph::element::Type precision,
35 const ngraph::Shape& inputShape,
36 const bool transparentIntermediate,
37 const FakeQuantizeOnData& fqOnData1,
38 const FakeQuantizeOnData& fqOnData2);
40 static std::shared_ptr<ngraph::Function> getOriginalWithSplitedIntermediate(
41 const ngraph::element::Type precision,
42 const ngraph::Shape& inputShape,
43 const FakeQuantizeOnData& fqOnData1,
44 const FakeQuantizeOnData& fqOnData2);
46 static std::shared_ptr<ngraph::Function> getOriginalSelectionWithIntermediate(
47 const ngraph::element::Type precision,
48 const ngraph::Shape& inputShape,
49 const bool transparentIntermediate,
50 const FakeQuantizeOnData& fqOnData1,
51 const FakeQuantizeOnData& fqOnData2);
53 static std::shared_ptr<ngraph::Function> getOriginalWithDifferentPrecisionOnChilds(
54 const ngraph::element::Type precision,
55 const ngraph::Shape& inputShape,
56 const FakeQuantizeOnData& fqOnData1,
57 const FakeQuantizeOnData& fqOnData2);
59 static std::shared_ptr<ngraph::Function> getOriginalWithIntermediateWithConstant(
60 const ngraph::element::Type precision,
61 const ngraph::Shape& inputShape,
62 const bool transparentIntermediate,
63 const FakeQuantizeOnData& fqOnData1,
64 const FakeQuantizeOnData& fqOnData2);
66 static std::shared_ptr<ngraph::Function> getReference(
67 const ngraph::element::Type precision,
68 const ngraph::Shape& inputShape,
69 const FakeQuantizeOnData& fakeQuantize1,
70 const FakeQuantizeOnData& fakeQuantize2,
71 const DequantizationOperations& dequantizationOperations);
73 static std::shared_ptr<ngraph::Function> getReferenceWithNeighbors(
74 const ngraph::element::Type precision,
75 const ngraph::Shape& inputShape,
76 const FakeQuantizeOnData& fqOnData1,
77 const FakeQuantizeOnData& fqOnData2,
78 const FakeQuantizeOnData& fqOnData3,
79 const DequantizationOperations& dequantizationOperations1,
80 const DequantizationOperations& dequantizationOperations2);
82 static std::shared_ptr<ngraph::Function> getReferenceWithIntermediate(
83 const ngraph::element::Type precision,
84 const ngraph::Shape& inputShape,
85 const bool transparentIntermediate,
86 const FakeQuantizeOnData& fqOnData1,
87 const FakeQuantizeOnData& fqOnData2,
88 const DequantizationOperations& dequantizationOperations1,
89 const DequantizationOperations& dequantizationOperations2);
91 static std::shared_ptr<ngraph::Function> getReferenceWithSplitedIntermediate(
92 const ngraph::element::Type precision,
93 const ngraph::Shape& inputShape,
94 const FakeQuantizeOnData& fqOnData1,
95 const FakeQuantizeOnData& fqOnData2,
96 const DequantizationOperations& dequantizationOperations1,
97 const DequantizationOperations& dequantizationOperations2);
99 static std::shared_ptr<ngraph::Function> getReferenceSelectionWithIntermediate(
100 const ngraph::element::Type precision,
101 const ngraph::Shape& inputShape,
102 const bool transparentIntermediate,
103 const FakeQuantizeOnData& fqOnData1,
104 const FakeQuantizeOnData& fqOnData2,
105 const DequantizationOperations& dequantizationOperations1,
106 const DequantizationOperations& dequantizationOperations2);
108 static std::shared_ptr<ngraph::Function> getReferenceWithDifferentPrecisionOnChilds(
109 const ngraph::element::Type precision,
110 const ngraph::Shape& inputShape,
111 const bool multiChannel,
112 const FakeQuantizeOnData& fqOnData1,
113 const FakeQuantizeOnData& fqOnData2,
114 const DequantizationOperations& dequantizationOperations1,
115 const DequantizationOperations& dequantizationOperations2);
117 static std::shared_ptr<ngraph::Function> getReferenceWithIntermediateWithConstant(
118 const ngraph::element::Type precision,
119 const ngraph::Shape& inputShape,
120 const bool transparentIntermediate,
121 const FakeQuantizeOnData& fqOnData1,
122 const FakeQuantizeOnData& fqOnData2,
123 const ngraph::element::Type precisionBeforeOp,
124 const DequantizationOperations& dequantizationBefore,
125 const ngraph::element::Type precisionAfterOperation,
126 const DequantizationOperations& dequantizationAfter,
127 const ngraph::element::Type precisionAfterDequantization);
130 } // namespace subgraph
131 } // namespace builder
132 } // namespace ngraph