1 | /* Copyright 2017 The TensorFlow Authors. All Rights Reserved. |
2 | |
3 | Licensed under the Apache License, Version 2.0 (the "License"); |
4 | you may not use this file except in compliance with the License. |
5 | You may obtain a copy of the License at |
6 | |
7 | http://www.apache.org/licenses/LICENSE-2.0 |
8 | |
9 | Unless required by applicable law or agreed to in writing, software |
10 | distributed under the License is distributed on an "AS IS" BASIS, |
11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
12 | See the License for the specific language governing permissions and |
13 | limitations under the License. |
14 | ==============================================================================*/ |
15 | |
16 | #include "tensorflow/lite/kernels/register.h" |
17 | |
18 | #include "tensorflow/lite/c/common.h" |
19 | #include "tensorflow/lite/kernels/builtin_op_kernels.h" |
20 | #include "tensorflow/lite/schema/schema_generated.h" |
21 | #include "tensorflow/lite/tflite_with_xnnpack_optional.h" |
22 | |
23 | namespace tflite { |
24 | namespace ops { |
25 | namespace custom { |
26 | |
27 | TfLiteRegistration* Register_NUMERIC_VERIFY(); |
28 | TfLiteRegistration* Register_AUDIO_SPECTROGRAM(); |
29 | TfLiteRegistration* Register_MFCC(); |
30 | TfLiteRegistration* Register_DETECTION_POSTPROCESS(); |
31 | |
32 | } // namespace custom |
33 | |
34 | namespace builtin { |
35 | |
36 | BuiltinOpResolver::BuiltinOpResolver() { |
37 | AddBuiltin(BuiltinOperator_ABS, Register_ABS(), /* min_version = */ 1, |
38 | /* max_version = */ 4); |
39 | AddBuiltin(BuiltinOperator_HARD_SWISH, Register_HARD_SWISH()); |
40 | AddBuiltin(BuiltinOperator_RELU, Register_RELU(), /* min_version = */ 1, |
41 | /* max_version = */ 3); |
42 | AddBuiltin(BuiltinOperator_RELU_N1_TO_1, Register_RELU_N1_TO_1()); |
43 | AddBuiltin(BuiltinOperator_RELU_0_TO_1, Register_RELU_0_TO_1()); |
44 | AddBuiltin(BuiltinOperator_RELU6, Register_RELU6(), /* min_version = */ 1, |
45 | /* max_version = */ 3); |
46 | AddBuiltin(BuiltinOperator_TANH, Register_TANH(), /* min_version = */ 1, |
47 | /* max_version = */ 3); |
48 | AddBuiltin(BuiltinOperator_LOGISTIC, Register_LOGISTIC(), |
49 | /* min_version = */ 1, |
50 | /* max_version = */ 3); |
51 | AddBuiltin(BuiltinOperator_AVERAGE_POOL_2D, Register_AVERAGE_POOL_2D(), |
52 | /* min_version */ 1, |
53 | /* max_version */ 3); |
54 | AddBuiltin(BuiltinOperator_MAX_POOL_2D, Register_MAX_POOL_2D(), |
55 | /* min_version */ 1, |
56 | /* max_version */ 3); |
57 | AddBuiltin(BuiltinOperator_L2_POOL_2D, Register_L2_POOL_2D()); |
58 | AddBuiltin(BuiltinOperator_CONV_2D, Register_CONV_2D(), |
59 | /* min_version = */ 1, |
60 | /* max_version = */ 6); |
61 | AddBuiltin(BuiltinOperator_DEPTHWISE_CONV_2D, Register_DEPTHWISE_CONV_2D(), |
62 | /* min_version = */ 1, |
63 | /* max_version = */ 6); |
64 | AddBuiltin(BuiltinOperator_SVDF, Register_SVDF(), |
65 | /* min_version = */ 1, |
66 | /* max_version = */ 4); |
67 | AddBuiltin(BuiltinOperator_RNN, Register_RNN(), |
68 | /* min_version = */ 1, |
69 | /* max_version = */ 3); |
70 | AddBuiltin(BuiltinOperator_BIDIRECTIONAL_SEQUENCE_RNN, |
71 | Register_BIDIRECTIONAL_SEQUENCE_RNN(), |
72 | /* min_version = */ 1, |
73 | /* max_version = */ 3); |
74 | AddBuiltin(BuiltinOperator_UNIDIRECTIONAL_SEQUENCE_RNN, |
75 | Register_UNIDIRECTIONAL_SEQUENCE_RNN(), |
76 | /* min_version = */ 1, |
77 | /* max_version = */ 3); |
78 | AddBuiltin(BuiltinOperator_EMBEDDING_LOOKUP, Register_EMBEDDING_LOOKUP(), |
79 | /* min_version = */ 1, |
80 | /* max_version = */ 3); |
81 | AddBuiltin(BuiltinOperator_EMBEDDING_LOOKUP_SPARSE, |
82 | Register_EMBEDDING_LOOKUP_SPARSE()); |
83 | AddBuiltin(BuiltinOperator_FULLY_CONNECTED, Register_FULLY_CONNECTED(), |
84 | /* min_version = */ 1, |
85 | /* max_version = */ 9); |
86 | AddBuiltin(BuiltinOperator_LSH_PROJECTION, Register_LSH_PROJECTION()); |
87 | AddBuiltin(BuiltinOperator_HASHTABLE_LOOKUP, Register_HASHTABLE_LOOKUP()); |
88 | AddBuiltin(BuiltinOperator_SOFTMAX, Register_SOFTMAX(), |
89 | /* min_version = */ 1, |
90 | /* max_version = */ 3); |
91 | AddBuiltin(BuiltinOperator_CONCATENATION, Register_CONCATENATION(), |
92 | /* min_version = */ 1, |
93 | /* max_version = */ 3); |
94 | AddBuiltin(BuiltinOperator_ADD, Register_ADD(), |
95 | /* min_version */ 1, |
96 | /* max_version */ 4); |
97 | AddBuiltin(BuiltinOperator_SPACE_TO_BATCH_ND, Register_SPACE_TO_BATCH_ND(), |
98 | /* min_version = */ 1, |
99 | /* max_version = */ 3); |
100 | AddBuiltin(BuiltinOperator_BATCH_TO_SPACE_ND, Register_BATCH_TO_SPACE_ND(), |
101 | /* min_version = */ 1, |
102 | /* max_version = */ 3); |
103 | AddBuiltin(BuiltinOperator_MUL, Register_MUL(), /* min_version = */ 1, |
104 | /* max_version = */ 6); |
105 | AddBuiltin(BuiltinOperator_L2_NORMALIZATION, Register_L2_NORMALIZATION(), |
106 | /* min_version = */ 1, |
107 | /* max_version = */ 2); |
108 | AddBuiltin(BuiltinOperator_LOCAL_RESPONSE_NORMALIZATION, |
109 | Register_LOCAL_RESPONSE_NORMALIZATION()); |
110 | AddBuiltin(BuiltinOperator_LSTM, Register_LSTM(), /* min_version = */ 1, |
111 | /* max_version = */ 4); |
112 | AddBuiltin(BuiltinOperator_BIDIRECTIONAL_SEQUENCE_LSTM, |
113 | Register_BIDIRECTIONAL_SEQUENCE_LSTM(), /* min_version = */ 1, |
114 | /* max_version = */ 3); |
115 | AddBuiltin(BuiltinOperator_UNIDIRECTIONAL_SEQUENCE_LSTM, |
116 | Register_UNIDIRECTIONAL_SEQUENCE_LSTM(), /* min_version = */ 1, |
117 | /* max_version = */ 3); |
118 | AddBuiltin(BuiltinOperator_PAD, Register_PAD(), /* min_version = */ 1, |
119 | /* max_version = */ 4); |
120 | AddBuiltin(BuiltinOperator_PADV2, Register_PADV2(), /* min_version = */ 1, |
121 | /* max_version = */ 4); |
122 | AddBuiltin(BuiltinOperator_RESHAPE, Register_RESHAPE()); |
123 | AddBuiltin(BuiltinOperator_RESIZE_BILINEAR, Register_RESIZE_BILINEAR(), |
124 | /* min_version = */ 1, |
125 | /* max_version = */ 4); |
126 | AddBuiltin(BuiltinOperator_RESIZE_NEAREST_NEIGHBOR, |
127 | Register_RESIZE_NEAREST_NEIGHBOR(), |
128 | /* min_version = */ 1, |
129 | /* max_version = */ 4); |
130 | AddBuiltin(BuiltinOperator_SKIP_GRAM, Register_SKIP_GRAM()); |
131 | AddBuiltin(BuiltinOperator_SPACE_TO_DEPTH, Register_SPACE_TO_DEPTH(), |
132 | /* min_version = */ 1, |
133 | /* max_version = */ 2); |
134 | AddBuiltin(BuiltinOperator_DEPTH_TO_SPACE, Register_DEPTH_TO_SPACE(), |
135 | /* min_version = */ 1, |
136 | /* max_version = */ 2); |
137 | AddBuiltin(BuiltinOperator_GATHER, Register_GATHER(), |
138 | /* min_version = */ 1, |
139 | /* max_version = */ 5); |
140 | AddBuiltin(BuiltinOperator_TRANSPOSE, Register_TRANSPOSE(), |
141 | /* min_version = */ 1, |
142 | /* max_version = */ 5); |
143 | AddBuiltin(BuiltinOperator_MEAN, Register_MEAN(), |
144 | /* min_version = */ 1, |
145 | /* max_version = */ 3); |
146 | AddBuiltin(BuiltinOperator_DIV, Register_DIV(), |
147 | /* min_version */ 1, |
148 | /* max_version */ 2); |
149 | AddBuiltin(BuiltinOperator_SUB, Register_SUB(), |
150 | /* min_version = */ 1, |
151 | /* max_version = */ 5); |
152 | AddBuiltin(BuiltinOperator_SPLIT, Register_SPLIT(), |
153 | /* min_version = */ 1, |
154 | /* max_version = */ 4); |
155 | AddBuiltin(BuiltinOperator_SPLIT_V, Register_SPLIT_V(), |
156 | /* min_version = */ 1, |
157 | /* max_version = */ 2); |
158 | AddBuiltin(BuiltinOperator_SQUEEZE, Register_SQUEEZE(), |
159 | /* min_version = */ 1, |
160 | /* max_version = */ 2); |
161 | AddBuiltin(BuiltinOperator_STRIDED_SLICE, Register_STRIDED_SLICE(), |
162 | /* min_version = */ 1, |
163 | /* max_version = */ 6); |
164 | AddBuiltin(BuiltinOperator_EXP, Register_EXP()); |
165 | AddBuiltin(BuiltinOperator_TOPK_V2, Register_TOPK_V2(), |
166 | /* min_version = */ 1, |
167 | /* max_version = */ 2); |
168 | AddBuiltin(BuiltinOperator_LOG, Register_LOG()); |
169 | AddBuiltin(BuiltinOperator_LOG_SOFTMAX, Register_LOG_SOFTMAX(), |
170 | /* min_version = */ 1, |
171 | /* max_version = */ 2); |
172 | AddBuiltin(BuiltinOperator_CAST, Register_CAST(), |
173 | /* min_version = */ 1, |
174 | /* max_version = */ 4); |
175 | AddBuiltin(BuiltinOperator_DEQUANTIZE, Register_DEQUANTIZE(), |
176 | /* min_version = */ 1, |
177 | /* max_version = */ 5); |
178 | AddBuiltin(BuiltinOperator_PRELU, Register_PRELU()); |
179 | AddBuiltin(BuiltinOperator_MAXIMUM, Register_MAXIMUM(), |
180 | /* min_version = */ 1, |
181 | /* max_version = */ 4); |
182 | AddBuiltin(BuiltinOperator_MINIMUM, Register_MINIMUM(), |
183 | /* min_version = */ 1, |
184 | /* max_version = */ 4); |
185 | AddBuiltin(BuiltinOperator_ARG_MAX, Register_ARG_MAX(), |
186 | /* min_version = */ 1, |
187 | /* max_version = */ 3); |
188 | AddBuiltin(BuiltinOperator_ARG_MIN, Register_ARG_MIN(), |
189 | /* min_version = */ 1, |
190 | /* max_version = */ 3); |
191 | AddBuiltin(BuiltinOperator_GREATER, Register_GREATER(), |
192 | /* min_version = */ 1, |
193 | /* max_version = */ 2); |
194 | AddBuiltin(BuiltinOperator_GREATER_EQUAL, Register_GREATER_EQUAL(), |
195 | /* min_version = */ 1, |
196 | /* max_version = */ 2); |
197 | AddBuiltin(BuiltinOperator_LESS, Register_LESS(), |
198 | /* min_version = */ 1, |
199 | /* max_version = */ 2); |
200 | AddBuiltin(BuiltinOperator_LESS_EQUAL, Register_LESS_EQUAL(), |
201 | /* min_version = */ 1, |
202 | /* max_version = */ 2); |
203 | AddBuiltin(BuiltinOperator_FLOOR, Register_FLOOR()); |
204 | AddBuiltin(BuiltinOperator_CEIL, Register_CEIL()); |
205 | AddBuiltin(BuiltinOperator_ROUND, Register_ROUND()); |
206 | AddBuiltin(BuiltinOperator_NEG, Register_NEG()); |
207 | AddBuiltin(BuiltinOperator_SELECT, Register_SELECT(), |
208 | /* min_version = */ 1, |
209 | /* max_version = */ 2); |
210 | AddBuiltin(BuiltinOperator_SELECT_V2, Register_SELECT_V2()); |
211 | AddBuiltin(BuiltinOperator_SLICE, Register_SLICE(), |
212 | /* min_version = */ 1, |
213 | /* max_version = */ 5); |
214 | AddBuiltin(BuiltinOperator_SIN, Register_SIN()); |
215 | AddBuiltin(BuiltinOperator_COS, Register_COS()); |
216 | AddBuiltin(BuiltinOperator_TRANSPOSE_CONV, Register_TRANSPOSE_CONV(), |
217 | /* min_version = */ 1, |
218 | /* max_version = */ 3); |
219 | AddBuiltin(BuiltinOperator_TILE, Register_TILE(), |
220 | /* min_version = */ 1, |
221 | /* max_version = */ 3); |
222 | AddBuiltin(BuiltinOperator_SUM, Register_SUM(), |
223 | /* min_version = */ 1, |
224 | /* max_version = */ 2); |
225 | AddBuiltin(BuiltinOperator_REDUCE_PROD, Register_REDUCE_PROD(), |
226 | /* min_version = */ 1, |
227 | /* max_version = */ 2); |
228 | AddBuiltin(BuiltinOperator_REDUCE_MAX, Register_REDUCE_MAX(), |
229 | /* min_version = */ 1, |
230 | /* max_version = */ 3); |
231 | AddBuiltin(BuiltinOperator_REDUCE_MIN, Register_REDUCE_MIN(), |
232 | /* min_version = */ 1, |
233 | /* max_version = */ 3); |
234 | AddBuiltin(BuiltinOperator_REDUCE_ANY, Register_REDUCE_ANY()); |
235 | AddBuiltin(BuiltinOperator_REDUCE_ALL, Register_REDUCE_ALL()); |
236 | AddBuiltin(BuiltinOperator_EXPAND_DIMS, Register_EXPAND_DIMS()); |
237 | AddBuiltin(BuiltinOperator_SPARSE_TO_DENSE, Register_SPARSE_TO_DENSE(), |
238 | /* min_version = */ 1, |
239 | /* max_version = */ 3); |
240 | AddBuiltin(BuiltinOperator_EQUAL, Register_EQUAL(), |
241 | /* min_version = */ 1, |
242 | /* max_version = */ 3); |
243 | AddBuiltin(BuiltinOperator_NOT_EQUAL, Register_NOT_EQUAL(), |
244 | /* min_version = */ 1, |
245 | /* max_version = */ 3); |
246 | AddBuiltin(BuiltinOperator_SQRT, Register_SQRT()); |
247 | AddBuiltin(BuiltinOperator_RSQRT, Register_RSQRT(), |
248 | /* min_version = */ 1, |
249 | /* max_version = */ 2); |
250 | AddBuiltin(BuiltinOperator_SHAPE, Register_SHAPE()); |
251 | AddBuiltin(BuiltinOperator_RANK, Register_RANK()); |
252 | AddBuiltin(BuiltinOperator_POW, Register_POW()); |
253 | AddBuiltin(BuiltinOperator_FAKE_QUANT, Register_FAKE_QUANT(), 1, 2); |
254 | AddBuiltin(BuiltinOperator_PACK, Register_PACK(), |
255 | /* min_version = */ 1, |
256 | /* max_version = */ 3); |
257 | AddBuiltin(BuiltinOperator_ONE_HOT, Register_ONE_HOT()); |
258 | AddBuiltin(BuiltinOperator_LOGICAL_OR, Register_LOGICAL_OR()); |
259 | AddBuiltin(BuiltinOperator_LOGICAL_AND, Register_LOGICAL_AND()); |
260 | AddBuiltin(BuiltinOperator_LOGICAL_NOT, Register_LOGICAL_NOT()); |
261 | AddBuiltin(BuiltinOperator_UNPACK, Register_UNPACK(), |
262 | /* min_version = */ 1, |
263 | /* max_version = */ 4); |
264 | AddBuiltin(BuiltinOperator_FLOOR_DIV, Register_FLOOR_DIV(), |
265 | /* min_version = */ 1, |
266 | /* max_version = */ 2); |
267 | AddBuiltin(BuiltinOperator_SQUARE, Register_SQUARE()); |
268 | AddBuiltin(BuiltinOperator_ZEROS_LIKE, Register_ZEROS_LIKE()); |
269 | AddBuiltin(BuiltinOperator_FLOOR_MOD, Register_FLOOR_MOD()); |
270 | AddBuiltin(BuiltinOperator_RANGE, Register_RANGE()); |
271 | AddBuiltin(BuiltinOperator_LEAKY_RELU, Register_LEAKY_RELU(), |
272 | /* min_version = */ 1, |
273 | /* max_version = */ 2); |
274 | AddBuiltin(BuiltinOperator_SQUARED_DIFFERENCE, Register_SQUARED_DIFFERENCE(), |
275 | /* min_version = */ 1, |
276 | /* max_version = */ 2); |
277 | AddBuiltin(BuiltinOperator_FILL, Register_FILL(), |
278 | /* min_version = */ 1, |
279 | /* max_version = */ 3); |
280 | AddBuiltin(BuiltinOperator_MIRROR_PAD, Register_MIRROR_PAD(), |
281 | /* min_version = */ 1, |
282 | /* max_version = */ 2); |
283 | AddBuiltin(BuiltinOperator_UNIQUE, Register_UNIQUE()); |
284 | AddBuiltin(BuiltinOperator_REVERSE_V2, Register_REVERSE_V2(), |
285 | /* min_version = */ 1, |
286 | /* max_version = */ 3); |
287 | AddBuiltin(BuiltinOperator_ADD_N, Register_ADD_N()); |
288 | AddBuiltin(BuiltinOperator_GATHER_ND, Register_GATHER_ND(), |
289 | /* min_version = */ 1, |
290 | /* max_version = */ 3); |
291 | AddBuiltin(BuiltinOperator_WHERE, Register_WHERE(), |
292 | /* min_version = */ 1, |
293 | /* max_version = */ 2); |
294 | AddBuiltin(BuiltinOperator_ELU, Register_ELU()); |
295 | AddBuiltin(BuiltinOperator_REVERSE_SEQUENCE, Register_REVERSE_SEQUENCE()); |
296 | AddBuiltin(BuiltinOperator_MATRIX_DIAG, Register_MATRIX_DIAG()); |
297 | AddBuiltin(BuiltinOperator_QUANTIZE, Register_QUANTIZE(), |
298 | /* min_version = */ 1, |
299 | /* max_version = */ 3); |
300 | AddBuiltin(BuiltinOperator_MATRIX_SET_DIAG, Register_MATRIX_SET_DIAG()); |
301 | AddBuiltin(BuiltinOperator_IF, tflite::ops::builtin::Register_IF()); |
302 | AddBuiltin(BuiltinOperator_WHILE, tflite::ops::builtin::Register_WHILE()); |
303 | AddBuiltin(BuiltinOperator_NON_MAX_SUPPRESSION_V4, |
304 | Register_NON_MAX_SUPPRESSION_V4()); |
305 | AddBuiltin(BuiltinOperator_NON_MAX_SUPPRESSION_V5, |
306 | Register_NON_MAX_SUPPRESSION_V5()); |
307 | AddBuiltin(BuiltinOperator_SCATTER_ND, Register_SCATTER_ND()); |
308 | AddBuiltin(BuiltinOperator_DENSIFY, Register_DENSIFY()); |
309 | AddBuiltin(BuiltinOperator_SEGMENT_SUM, Register_SEGMENT_SUM()); |
310 | AddBuiltin(BuiltinOperator_BATCH_MATMUL, Register_BATCH_MATMUL(), |
311 | /* min_version = */ 1, |
312 | /* max_version = */ 4); |
313 | AddBuiltin(BuiltinOperator_CUMSUM, Register_CUMSUM()); |
314 | // The version one of broadcast to op won't be not supported since the version |
315 | // one was rollbacked and the builtin op code number has been changed because |
316 | // of builtin op code shortage problem. |
317 | AddBuiltin(BuiltinOperator_BROADCAST_TO, Register_BROADCAST_TO(), |
318 | /* min_version = */ 2, |
319 | /* max_version = */ 3); |
320 | AddBuiltin(BuiltinOperator_CALL_ONCE, |
321 | tflite::ops::builtin::Register_CALL_ONCE()); |
322 | AddBuiltin(BuiltinOperator_RFFT2D, Register_RFFT2D()); |
323 | AddBuiltin(BuiltinOperator_CONV_3D, Register_CONV_3D()); |
324 | AddBuiltin(BuiltinOperator_IMAG, Register_IMAG()); |
325 | AddBuiltin(BuiltinOperator_REAL, Register_REAL()); |
326 | AddBuiltin(BuiltinOperator_COMPLEX_ABS, Register_COMPLEX_ABS()); |
327 | AddBuiltin(BuiltinOperator_BROADCAST_ARGS, Register_BROADCAST_ARGS()); |
328 | AddBuiltin(BuiltinOperator_HASHTABLE, Register_HASHTABLE()); |
329 | AddBuiltin(BuiltinOperator_HASHTABLE_FIND, Register_HASHTABLE_FIND()); |
330 | AddBuiltin(BuiltinOperator_HASHTABLE_IMPORT, Register_HASHTABLE_IMPORT()); |
331 | AddBuiltin(BuiltinOperator_HASHTABLE_SIZE, Register_HASHTABLE_SIZE()); |
332 | AddBuiltin(BuiltinOperator_CONV_3D_TRANSPOSE, Register_CONV_3D_TRANSPOSE()); |
333 | AddBuiltin(BuiltinOperator_VAR_HANDLE, Register_VAR_HANDLE()); |
334 | AddBuiltin(BuiltinOperator_READ_VARIABLE, Register_READ_VARIABLE()); |
335 | AddBuiltin(BuiltinOperator_ASSIGN_VARIABLE, Register_ASSIGN_VARIABLE()); |
336 | AddBuiltin(BuiltinOperator_MULTINOMIAL, Register_MULTINOMIAL()); |
337 | AddBuiltin(BuiltinOperator_RANDOM_STANDARD_NORMAL, |
338 | Register_RANDOM_STANDARD_NORMAL()); |
339 | AddBuiltin(BuiltinOperator_BUCKETIZE, Register_BUCKETIZE()); |
340 | AddBuiltin(BuiltinOperator_RANDOM_UNIFORM, Register_RANDOM_UNIFORM()); |
341 | AddBuiltin(BuiltinOperator_GELU, Register_GELU(), |
342 | /* min_version = */ 1, |
343 | /* max_version = */ 2); |
344 | AddBuiltin(BuiltinOperator_DYNAMIC_UPDATE_SLICE, |
345 | Register_DYNAMIC_UPDATE_SLICE()); |
346 | AddBuiltin(BuiltinOperator_UNSORTED_SEGMENT_PROD, |
347 | Register_UNSORTED_SEGMENT_PROD()); |
348 | AddBuiltin(BuiltinOperator_UNSORTED_SEGMENT_MAX, |
349 | Register_UNSORTED_SEGMENT_MAX()); |
350 | AddBuiltin(BuiltinOperator_UNSORTED_SEGMENT_MIN, |
351 | Register_UNSORTED_SEGMENT_MIN()); |
352 | AddBuiltin(BuiltinOperator_UNSORTED_SEGMENT_SUM, |
353 | Register_UNSORTED_SEGMENT_SUM()); |
354 | AddBuiltin(BuiltinOperator_ATAN2, Register_ATAN2()); |
355 | AddBuiltin(BuiltinOperator_SIGN, Register_SIGN()); |
356 | AddCustom("NumericVerify" , tflite::ops::custom::Register_NUMERIC_VERIFY()); |
357 | // TODO(andrewharp, ahentz): Move these somewhere more appropriate so that |
358 | // custom ops aren't always included by default. |
359 | AddCustom("Mfcc" , tflite::ops::custom::Register_MFCC()); |
360 | AddCustom("AudioSpectrogram" , |
361 | tflite::ops::custom::Register_AUDIO_SPECTROGRAM()); |
362 | AddCustom("TFLite_Detection_PostProcess" , |
363 | tflite::ops::custom::Register_DETECTION_POSTPROCESS()); |
364 | // By definition, all of the ops added above are not user-defined ops, |
365 | // since they are supported by BuiltinOpResolver. |
366 | may_directly_contain_user_defined_ops_ = false; |
367 | |
368 | // Populate the list of TF Lite delegate creators. The created delegates could |
369 | // be applied to the model graph by default at runtime. |
370 | delegate_creators_.push_back([](int num_threads) { |
371 | return tflite::MaybeCreateXNNPACKDelegate(num_threads); |
372 | }); |
373 | } |
374 | |
375 | } // namespace builtin |
376 | } // namespace ops |
377 | } // namespace tflite |
378 | |