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> getOriginal(
27 const ngraph::element::Type precision,
28 const ngraph::Shape& inputShape,
29 const FakeQuantizeOnDataWithConstant& fakeQuantize1,
30 const FakeQuantizeOnDataWithConstant& fakeQuantize2);
32 static std::shared_ptr<ngraph::Function> getOriginalWithNeighbors(
33 const ngraph::element::Type precision,
34 const ngraph::Shape& inputShape,
35 const FakeQuantizeOnData& fqOnData1,
36 const FakeQuantizeOnData& fqOnData2,
37 const FakeQuantizeOnData& fqOnData3);
39 static std::shared_ptr<ngraph::Function> getOriginalWithIntermediate(
40 const ngraph::element::Type precision,
41 const ngraph::Shape& inputShape,
42 const bool transparentIntermediate,
43 const FakeQuantizeOnData& fqOnData1,
44 const FakeQuantizeOnData& fqOnData2);
46 static std::shared_ptr<ngraph::Function> getOriginalWithSplitedIntermediate(
47 const ngraph::element::Type precision,
48 const ngraph::Shape& inputShape,
49 const FakeQuantizeOnData& fqOnData1,
50 const FakeQuantizeOnData& fqOnData2);
52 static std::shared_ptr<ngraph::Function> getOriginalSelectionWithIntermediate(
53 const ngraph::element::Type precision,
54 const ngraph::Shape& inputShape,
55 const bool transparentIntermediate,
56 const FakeQuantizeOnData& fqOnData1,
57 const FakeQuantizeOnData& fqOnData2);
59 static std::shared_ptr<ngraph::Function> getOriginalWithDifferentPrecisionOnChilds(
60 const ngraph::element::Type precision,
61 const ngraph::Shape& inputShape,
62 const FakeQuantizeOnData& fqOnData1,
63 const FakeQuantizeOnData& fqOnData2);
65 static std::shared_ptr<ngraph::Function> getOriginalWithIntermediateWithConstant(
66 const ngraph::element::Type precision,
67 const ngraph::Shape& inputShape,
68 const bool transparentIntermediate,
69 const FakeQuantizeOnData& fqOnData1,
70 const FakeQuantizeOnData& fqOnData2);
72 static std::shared_ptr<ngraph::Function> getReference(
73 const ngraph::element::Type precision,
74 const ngraph::Shape& inputShape,
75 const FakeQuantizeOnData& fakeQuantize1,
76 const FakeQuantizeOnData& fakeQuantize2,
77 const DequantizationOperations& dequantizationOperations);
79 static std::shared_ptr<ngraph::Function> getReference(
80 const ngraph::element::Type precision,
81 const ngraph::Shape& inputShape,
82 const FakeQuantizeOnDataWithConstant& fakeQuantize1,
83 const FakeQuantizeOnDataWithConstant& fakeQuantize2,
84 const DequantizationOperations& dequantizationOperations);
86 static std::shared_ptr<ngraph::Function> getReferenceWithNeighbors(
87 const ngraph::element::Type precision,
88 const ngraph::Shape& inputShape,
89 const FakeQuantizeOnData& fqOnData1,
90 const FakeQuantizeOnData& fqOnData2,
91 const FakeQuantizeOnData& fqOnData3,
92 const DequantizationOperations& dequantizationOperations1,
93 const DequantizationOperations& dequantizationOperations2);
95 static std::shared_ptr<ngraph::Function> getReferenceWithIntermediate(
96 const ngraph::element::Type precision,
97 const ngraph::Shape& inputShape,
98 const bool transparentIntermediate,
99 const FakeQuantizeOnData& fqOnData1,
100 const FakeQuantizeOnData& fqOnData2,
101 const DequantizationOperations& dequantizationOperations1,
102 const DequantizationOperations& dequantizationOperations2);
104 static std::shared_ptr<ngraph::Function> getReferenceWithSplitedIntermediate(
105 const ngraph::element::Type precision,
106 const ngraph::Shape& inputShape,
107 const FakeQuantizeOnData& fqOnData1,
108 const FakeQuantizeOnData& fqOnData2,
109 const DequantizationOperations& dequantizationOperations1,
110 const DequantizationOperations& dequantizationOperations2);
112 static std::shared_ptr<ngraph::Function> getReferenceSelectionWithIntermediate(
113 const ngraph::element::Type precision,
114 const ngraph::Shape& inputShape,
115 const bool transparentIntermediate,
116 const FakeQuantizeOnData& fqOnData1,
117 const FakeQuantizeOnData& fqOnData2,
118 const DequantizationOperations& dequantizationOperations1,
119 const DequantizationOperations& dequantizationOperations2);
121 static std::shared_ptr<ngraph::Function> getReferenceWithDifferentPrecisionOnChilds(
122 const ngraph::element::Type precision,
123 const ngraph::Shape& inputShape,
124 const bool multiChannel,
125 const FakeQuantizeOnData& fqOnData1,
126 const FakeQuantizeOnData& fqOnData2,
127 const DequantizationOperations& dequantizationOperations1,
128 const DequantizationOperations& dequantizationOperations2);
130 static std::shared_ptr<ngraph::Function> getReferenceWithIntermediateWithConstant(
131 const ngraph::element::Type precision,
132 const ngraph::Shape& inputShape,
133 const bool transparentIntermediate,
134 const FakeQuantizeOnData& fqOnData1,
135 const FakeQuantizeOnData& fqOnData2,
136 const ngraph::element::Type precisionBeforeOp,
137 const DequantizationOperations& dequantizationBefore,
138 const ngraph::element::Type precisionAfterOperation,
139 const DequantizationOperations& dequantizationAfter,
140 const ngraph::element::Type precisionAfterDequantization);
143 } // namespace subgraph
144 } // namespace builder
145 } // namespace ngraph