add tests for 5 ops based on model zoo (#3062)
[platform/upstream/dldt.git] / inference-engine / tests / functional / inference_engine / ngraph_reader / ctc_greedy_decoder_tests.cpp
1 // Copyright (C) 2018-2020 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4
5 #include <string>
6 #include "ngraph_reader_tests.hpp"
7
8 TEST_F(NGraphReaderTests, ReadCTCGreedyDecoderNetwork) {
9     std::string model = R"V0G0N(
10 <net name="ctcgreedydecoder" version="10">
11         <layers>
12                 <layer id="0" name="CTCGreedyDecoder/placeholder_port_0" type="Parameter" version="opset1">
13                         <data shape="20,8,128" element_type="f32"/>
14                         <output>
15                                 <port id="0" precision="FP32">
16                                         <dim>20</dim>
17                                         <dim>8</dim>
18                                         <dim>128</dim>
19                                 </port>
20                         </output>
21                 </layer>
22                 <layer id="1" name="Fill/Broadcast/Output_0/Data__const" type="Const" version="opset1">
23                         <data offset="0" size="640" shape="20,8" element_type="f32"/>
24                         <output>
25                                 <port id="0" precision="FP32">
26                                         <dim>20</dim>
27                                         <dim>8</dim>
28                                 </port>
29                         </output>
30                 </layer>
31                 <layer id="2" name="CTCGreedyDecoder" type="CTCGreedyDecoder" version="opset1">
32                         <data ctc_merge_repeated="1"/>
33                         <input>
34                                 <port id="0">
35                                         <dim>20</dim>
36                                         <dim>8</dim>
37                                         <dim>128</dim>
38                                 </port>
39                                 <port id="1">
40                                         <dim>20</dim>
41                                         <dim>8</dim>
42                                 </port>
43                         </input>
44                         <output>
45                                 <port id="2" precision="FP32">
46                                         <dim>8</dim>
47                                         <dim>20</dim>
48                                         <dim>1</dim>
49                                         <dim>1</dim>
50                                 </port>
51                         </output>
52                 </layer>
53                 <layer id="3" name="CTCGreedyDecoder/sink_port_0" type="Result" version="opset1">
54                         <input>
55                                 <port id="0">
56                                         <dim>8</dim>
57                                         <dim>20</dim>
58                                         <dim>1</dim>
59                                         <dim>1</dim>
60                                 </port>
61                         </input>
62                 </layer>
63         </layers>
64         <edges>
65                 <edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
66                 <edge from-layer="1" from-port="0" to-layer="2" to-port="1"/>
67                 <edge from-layer="2" from-port="2" to-layer="3" to-port="0"/>
68         </edges>
69 </net>
70 )V0G0N";
71     std::string modelV7 = R"V0G0N(
72 <net name="ctcgreedydecoder" version="7">
73         <layers>
74                 <layer id="0" name="CTCGreedyDecoder/placeholder_port_0" type="Input" version="opset1">
75                         <output>
76                                 <port id="0" precision="FP32">
77                                         <dim>20</dim>
78                                         <dim>8</dim>
79                                         <dim>128</dim>
80                                 </port>
81                         </output>
82                 </layer>
83                 <layer id="1" name="Fill/Broadcast/Output_0/Data__const" type="Const" version="opset1">
84                         <output>
85                                 <port id="0" precision="FP32">
86                                         <dim>20</dim>
87                                         <dim>8</dim>
88                                 </port>
89                         </output>
90                         <blobs>
91                                 <custom offset="0" size="640" precision="FP32"/>
92                         </blobs>
93                 </layer>
94                 <layer id="2" name="CTCGreedyDecoder" type="CTCGreedyDecoder" version="opset1">
95                         <data ctc_merge_repeated="1"/>
96                         <input>
97                                 <port id="0">
98                                         <dim>20</dim>
99                                         <dim>8</dim>
100                                         <dim>128</dim>
101                                 </port>
102                                 <port id="1">
103                                         <dim>20</dim>
104                                         <dim>8</dim>
105                                 </port>
106                         </input>
107                         <output>
108                                 <port id="2" precision="FP32">
109                                         <dim>8</dim>
110                                         <dim>20</dim>
111                                         <dim>1</dim>
112                                         <dim>1</dim>
113                                 </port>
114                         </output>
115                 </layer>
116         </layers>
117         <edges>
118                 <edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
119                 <edge from-layer="1" from-port="0" to-layer="2" to-port="1"/>
120         </edges>
121 </net>
122 )V0G0N";
123     compareIRs(model, modelV7, 640);
124 }
125
126
127 #include <string>
128 #include "ngraph_reader_tests.hpp"
129
130 TEST_F(NGraphReaderTests, ReadCTCGreedyDecoderNoMergeNetwork) {
131     std::string model = R"V0G0N(
132 <net name="ctcgreedydecoder" version="10">
133         <layers>
134                 <layer id="0" name="CTCGreedyDecoder/placeholder_port_0" type="Parameter" version="opset1">
135                         <data shape="20,8,128" element_type="f32"/>
136                         <output>
137                                 <port id="0" precision="FP32">
138                                         <dim>20</dim>
139                                         <dim>8</dim>
140                                         <dim>128</dim>
141                                 </port>
142                         </output>
143                 </layer>
144                 <layer id="1" name="Fill/Broadcast/Output_0/Data__const" type="Const" version="opset1">
145                         <data offset="0" size="640" shape="20,8" element_type="f32"/>
146                         <output>
147                                 <port id="0" precision="FP32">
148                                         <dim>20</dim>
149                                         <dim>8</dim>
150                                 </port>
151                         </output>
152                 </layer>
153                 <layer id="2" name="CTCGreedyDecoder" type="CTCGreedyDecoder" version="opset1">
154                         <data ctc_merge_repeated="0"/>
155                         <input>
156                                 <port id="0">
157                                         <dim>20</dim>
158                                         <dim>8</dim>
159                                         <dim>128</dim>
160                                 </port>
161                                 <port id="1">
162                                         <dim>20</dim>
163                                         <dim>8</dim>
164                                 </port>
165                         </input>
166                         <output>
167                                 <port id="2" precision="FP32">
168                                         <dim>8</dim>
169                                         <dim>20</dim>
170                                         <dim>1</dim>
171                                         <dim>1</dim>
172                                 </port>
173                         </output>
174                 </layer>
175                 <layer id="3" name="CTCGreedyDecoder/sink_port_0" type="Result" version="opset1">
176                         <input>
177                                 <port id="0">
178                                         <dim>8</dim>
179                                         <dim>20</dim>
180                                         <dim>1</dim>
181                                         <dim>1</dim>
182                                 </port>
183                         </input>
184                 </layer>
185         </layers>
186         <edges>
187                 <edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
188                 <edge from-layer="1" from-port="0" to-layer="2" to-port="1"/>
189                 <edge from-layer="2" from-port="2" to-layer="3" to-port="0"/>
190         </edges>
191 </net>
192 )V0G0N";
193     std::string modelV7 = R"V0G0N(
194 <net name="ctcgreedydecoder" version="7">
195         <layers>
196                 <layer id="0" name="CTCGreedyDecoder/placeholder_port_0" type="Input" version="opset1">
197                         <output>
198                                 <port id="0" precision="FP32">
199                                         <dim>20</dim>
200                                         <dim>8</dim>
201                                         <dim>128</dim>
202                                 </port>
203                         </output>
204                 </layer>
205                 <layer id="1" name="Fill/Broadcast/Output_0/Data__const" type="Const" version="opset1">
206                         <output>
207                                 <port id="0" precision="FP32">
208                                         <dim>20</dim>
209                                         <dim>8</dim>
210                                 </port>
211                         </output>
212                         <blobs>
213                                 <custom offset="0" size="640" precision="FP32"/>
214                         </blobs>
215                 </layer>
216                 <layer id="2" name="CTCGreedyDecoder" type="CTCGreedyDecoder" version="opset1">
217                         <data ctc_merge_repeated="0"/>
218                         <input>
219                                 <port id="0">
220                                         <dim>20</dim>
221                                         <dim>8</dim>
222                                         <dim>128</dim>
223                                 </port>
224                                 <port id="1">
225                                         <dim>20</dim>
226                                         <dim>8</dim>
227                                 </port>
228                         </input>
229                         <output>
230                                 <port id="2" precision="FP32">
231                                         <dim>8</dim>
232                                         <dim>20</dim>
233                                         <dim>1</dim>
234                                         <dim>1</dim>
235                                 </port>
236                         </output>
237                 </layer>
238         </layers>
239         <edges>
240                 <edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
241                 <edge from-layer="1" from-port="0" to-layer="2" to-port="1"/>
242         </edges>
243 </net>
244 )V0G0N";
245     compareIRs(model, modelV7, 640);
246 }