blob: 09187927aec8edf19f150db6d3564c7fa0c0f946 [file] [log] [blame]
Nattapat Chaimanowong969eea32019-01-30 13:33:11 +00001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
Derek Lamberti0028d1b2019-02-20 13:57:42 +00006namespace armnnSerializer;
Nattapat Chaimanowong969eea32019-01-30 13:33:11 +00007
8file_identifier "ARMN";
9
10file_extension "armnn";
11
Mike Kellyaf484012019-02-20 16:53:11 +000012enum ActivationFunction : byte {
13 Sigmoid = 0,
14 TanH = 1,
15 Linear = 2,
16 ReLu = 3,
17 BoundedReLu = 4,
18 SoftReLu = 5,
19 LeakyReLu = 6,
20 Abs = 7,
21 Sqrt = 8,
22 Square = 9
23}
24
Nattapat Chaimanowong969eea32019-01-30 13:33:11 +000025enum DataType : byte {
26 Float16 = 0,
27 Float32 = 1,
28 QuantisedAsymm8 = 2,
29 Signed32 = 3,
Nattapat Chaimanowongcd5ac232019-03-19 12:26:36 +000030 Boolean = 4,
31 QuantisedSymm16 = 5
Nattapat Chaimanowong969eea32019-01-30 13:33:11 +000032}
33
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000034enum DataLayout : byte {
35 NHWC = 0,
36 NCHW = 1
37}
38
FinnWilliamsArm6fb339a2019-06-28 15:07:10 +010039enum ResizeMethod: byte {
40 NearestNeighbor = 0,
41 Bilinear = 1,
42}
43
Nattapat Chaimanowong969eea32019-01-30 13:33:11 +000044table TensorInfo {
45 dimensions:[uint];
46 dataType:DataType;
47 quantizationScale:float = 1.0;
48 quantizationOffset:int = 0;
49}
50
51struct Connection {
52 sourceLayerIndex:uint;
53 outputSlotIndex:uint;
54}
55
56table ByteData {
57 data:[byte];
58}
59
60table ShortData {
61 data:[short];
62}
63
64table IntData {
65 data:[int];
66}
67
68table LongData {
69 data:[long];
70}
71
72union ConstTensorData { ByteData, ShortData, IntData, LongData }
73
74table ConstTensor {
75 info:TensorInfo;
76 data:ConstTensorData;
77}
78
79table InputSlot {
80 index:uint;
81 connection:Connection;
82}
83
84table OutputSlot {
85 index:uint;
86 tensorInfo:TensorInfo;
87}
88
89enum LayerType : uint {
90 Addition = 0,
91 Input = 1,
Sadik Armagan5f450272019-02-12 14:31:45 +000092 Multiplication = 2,
Aron Virginas-Tarfc413c02019-02-13 15:41:52 +000093 Output = 3,
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000094 Pooling2d = 4,
Saoirse Stewart263829c2019-02-19 15:54:14 +000095 Reshape = 5,
Mike Kellya0766c32019-02-19 17:22:07 +000096 Softmax = 6,
Aron Virginas-Tarc04125f2019-02-19 16:31:08 +000097 Convolution2d = 7,
Mike Kellyaf484012019-02-20 16:53:11 +000098 DepthwiseConvolution2d = 8,
Nattapat Chaimanowong30b00202019-02-20 17:31:34 +000099 Activation = 9,
Sadik Armagandbb0c0c2019-02-21 09:01:41 +0000100 Permute = 10,
Conor Kennedy76277882019-02-26 08:29:54 +0000101 FullyConnected = 11,
Nattapat Chaimanowong45286992019-02-26 15:53:02 +0000102 Constant = 12,
Nattapat Chaimanowong6b4ed982019-02-26 17:24:13 +0000103 SpaceToBatchNd = 13,
Éanna Ó Catháin58885892019-02-27 16:16:39 +0000104 BatchToSpaceNd = 14,
Aron Virginas-Tar0fe32452019-02-28 13:12:47 +0000105 Division = 15,
Nattapat Chaimanowong235cea52019-02-28 16:27:30 +0000106 Minimum = 16,
Aron Virginas-Tar377351e2019-02-27 14:42:31 +0000107 Equal = 17,
Nina Drozd57728782019-02-27 10:53:27 +0000108 Maximum = 18,
Nattapat Chaimanowongebb0f9c2019-03-01 12:14:06 +0000109 Normalization = 19,
Sadik Armagan8b42a382019-03-01 14:24:49 +0000110 Pad = 20,
Finn Williamsdd2ba7e2019-03-01 11:51:52 +0000111 Rsqrt = 21,
ruoyan018e7fa232019-02-28 15:09:07 +0000112 Floor = 22,
Conor Kennedy79ffdf52019-03-01 14:24:54 +0000113 BatchNormalization = 23,
Nattapat Chaimanowong6522cdc2019-03-01 16:14:13 +0000114 Greater = 24,
Conor Kennedyda1f9752019-03-01 14:37:12 +0000115 ResizeBilinear = 25,
Nattapat Chaimanowongb3485212019-03-04 12:35:39 +0000116 Subtraction = 26,
Saoirse Stewarta1ed73a2019-03-04 13:40:12 +0000117 StridedSlice = 27,
Sadik Armaganac97c8c2019-03-04 17:44:21 +0000118 Gather = 28,
Jim Flynnac25a1b2019-02-28 10:40:49 +0000119 Mean = 29,
Narumol Prangnawarat495701f2019-03-07 17:31:34 +0000120 Merger = 30,
Jim Flynn18ce3382019-03-08 11:08:30 +0000121 L2Normalization = 31,
Nattapat Chaimanowong3e14a9d2019-03-18 12:37:06 +0000122 Splitter = 32,
Jim Flynn11af3752019-03-19 17:22:29 +0000123 DetectionPostProcess = 33,
Derek Lamberti87acb272019-03-27 16:51:31 +0000124 Lstm = 34,
Nattapat Chaimanowonge4294fd2019-03-28 09:56:53 +0000125 Quantize = 35,
Nattapat Chaimanowong1f886302019-04-05 13:37:19 +0100126 Dequantize = 36,
Sadik Armaganeff363d2019-04-05 15:25:46 +0100127 Merge = 37,
Jim Flynne242f2d2019-05-22 14:24:13 +0100128 Switch = 38,
Aron Virginas-Taraa067142019-06-11 16:01:44 +0100129 Concat = 39,
Ellen Norris-Thompson51982472019-06-19 11:46:21 +0100130 SpaceToDepth = 40,
Aron Virginas-Tarcb549302019-06-21 13:53:38 +0100131 Prelu = 41,
FinnWilliamsArm6fb339a2019-06-28 15:07:10 +0100132 TransposeConvolution2d = 42,
133 Resize = 43
Nattapat Chaimanowong969eea32019-01-30 13:33:11 +0000134}
135
136// Base layer table to be used as part of other layers
137table LayerBase {
138 index:uint;
139 layerName:string;
140 layerType:LayerType;
141 inputSlots:[InputSlot];
142 outputSlots:[OutputSlot];
143}
144
145table BindableLayerBase {
146 base:LayerBase;
147 layerBindingId:int;
148}
149
150// Table for each layer defined below
Mike Kellyaf484012019-02-20 16:53:11 +0000151table ActivationLayer {
152 base:LayerBase;
153 descriptor:ActivationDescriptor;
154}
155
156table ActivationDescriptor {
157 function:ActivationFunction = Sigmoid;
158 a:float;
159 b:float;
160}
161
Nattapat Chaimanowong969eea32019-01-30 13:33:11 +0000162table AdditionLayer {
163 base:LayerBase;
164}
165
Conor Kennedy76277882019-02-26 08:29:54 +0000166table ConstantLayer {
167 base:LayerBase;
168 input:ConstTensor;
169}
170
Mike Kellya0766c32019-02-19 17:22:07 +0000171table Convolution2dLayer {
172 base:LayerBase;
173 descriptor:Convolution2dDescriptor;
174 weights:ConstTensor;
175 biases:ConstTensor;
176}
177
178table Convolution2dDescriptor {
179 padLeft:uint;
180 padRight:uint;
181 padTop:uint;
182 padBottom:uint;
183 strideX:uint;
184 strideY:uint;
Matthew Benthamacad04e2019-05-13 10:02:45 +0100185 dilationX:uint = 1;
186 dilationY:uint = 1;
Mike Kellya0766c32019-02-19 17:22:07 +0000187 biasEnabled:bool = false;
188 dataLayout:DataLayout = NCHW;
189}
190
Éanna Ó Catháin58885892019-02-27 16:16:39 +0000191table DivisionLayer {
192 base:LayerBase;
193}
194
Nattapat Chaimanowong235cea52019-02-28 16:27:30 +0000195table EqualLayer {
196 base:LayerBase;
197}
198
Finn Williamsdd2ba7e2019-03-01 11:51:52 +0000199table FloorLayer{
200 base:LayerBase;
201}
202
Sadik Armagandbb0c0c2019-02-21 09:01:41 +0000203table FullyConnectedLayer {
204 base:LayerBase;
205 descriptor:FullyConnectedDescriptor;
206 weights:ConstTensor;
207 biases:ConstTensor;
208}
209
210table FullyConnectedDescriptor {
211 biasEnabled:bool = false;
212 transposeWeightsMatrix:bool = false;
213}
214
Saoirse Stewarta1ed73a2019-03-04 13:40:12 +0000215table GatherLayer {
216 base:LayerBase;
217}
218
Conor Kennedy79ffdf52019-03-01 14:24:54 +0000219table GreaterLayer {
220 base:LayerBase;
221}
222
Nattapat Chaimanowong969eea32019-01-30 13:33:11 +0000223table InputLayer {
224 base:BindableLayerBase;
225}
226
Narumol Prangnawarat495701f2019-03-07 17:31:34 +0000227table L2NormalizationLayer {
228 base:LayerBase;
229 descriptor:L2NormalizationDescriptor;
230}
231
232table L2NormalizationDescriptor {
233 dataLayout:DataLayout = NCHW;
Ferran Balaguer0dcffec2019-06-18 16:25:06 +0100234 eps:float = 1e-12;
Narumol Prangnawarat495701f2019-03-07 17:31:34 +0000235}
236
Aron Virginas-Tar0fe32452019-02-28 13:12:47 +0000237table MinimumLayer {
238 base:LayerBase;
239}
240
Aron Virginas-Tar377351e2019-02-27 14:42:31 +0000241table MaximumLayer {
242 base:LayerBase;
243}
244
Sadik Armagan5f450272019-02-12 14:31:45 +0000245table MultiplicationLayer {
246 base:LayerBase;
247}
248
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000249table Pooling2dLayer {
250 base:LayerBase;
251 descriptor:Pooling2dDescriptor;
252}
253
254enum PoolingAlgorithm : byte {
255 Max = 0,
256 Average = 1,
257 L2 = 2
258}
259
260enum OutputShapeRounding : byte {
261 Floor = 0,
262 Ceiling = 1
263}
264
265enum PaddingMethod : byte {
266 IgnoreValue = 0,
267 Exclude = 1
268}
269
270table Pooling2dDescriptor {
271 poolType:PoolingAlgorithm;
272 padLeft:uint;
273 padRight:uint;
274 padTop:uint;
275 padBottom:uint;
276 poolWidth:uint;
277 poolHeight:uint;
278 strideX:uint;
279 strideY:uint;
280 outputShapeRounding:OutputShapeRounding;
281 paddingMethod:PaddingMethod;
282 dataLayout:DataLayout;
283}
284
Derek Lamberti87acb272019-03-27 16:51:31 +0000285table QuantizeLayer {
286 base:LayerBase;
287}
288
Aron Virginas-Tarfc413c02019-02-13 15:41:52 +0000289table SoftmaxLayer {
290 base:LayerBase;
291 descriptor:SoftmaxDescriptor;
292}
293
294table SoftmaxDescriptor {
295 beta:float;
296}
297
Aron Virginas-Tarc04125f2019-02-19 16:31:08 +0000298table DepthwiseConvolution2dLayer {
299 base:LayerBase;
300 descriptor:DepthwiseConvolution2dDescriptor;
301 weights:ConstTensor;
302 biases:ConstTensor;
303}
304
305table DepthwiseConvolution2dDescriptor {
306 padLeft:uint;
307 padRight:uint;
308 padTop:uint;
309 padBottom:uint;
310 strideX:uint;
311 strideY:uint;
Matthew Benthamacad04e2019-05-13 10:02:45 +0100312 dilationX:uint = 1;
313 dilationY:uint = 1;
Aron Virginas-Tarc04125f2019-02-19 16:31:08 +0000314 biasEnabled:bool = false;
315 dataLayout:DataLayout = NCHW;
316}
317
Nattapat Chaimanowong969eea32019-01-30 13:33:11 +0000318table OutputLayer {
319 base:BindableLayerBase;
320}
321
Saoirse Stewart263829c2019-02-19 15:54:14 +0000322table ReshapeLayer {
323 base:LayerBase;
324 descriptor:ReshapeDescriptor;
325}
326
327table ReshapeDescriptor {
328 targetShape:[uint];
329}
330
Nattapat Chaimanowong30b00202019-02-20 17:31:34 +0000331table PermuteLayer {
332 base:LayerBase;
333 descriptor:PermuteDescriptor;
334}
335
336table PermuteDescriptor {
337 dimMappings:[uint];
338}
339
Nattapat Chaimanowong45286992019-02-26 15:53:02 +0000340table SpaceToBatchNdLayer {
341 base:LayerBase;
342 descriptor:SpaceToBatchNdDescriptor;
343}
344
345table SpaceToBatchNdDescriptor {
346 blockShape:[uint];
347 padList:[uint];
348 dataLayout:DataLayout;
349}
350
Aron Virginas-Taraa067142019-06-11 16:01:44 +0100351table SpaceToDepthLayer {
352 base:LayerBase;
353 descriptor:SpaceToDepthDescriptor;
354}
355
356table SpaceToDepthDescriptor {
357 blockSize:uint;
358 dataLayout:DataLayout;
359}
360
Conor Kennedyda1f9752019-03-01 14:37:12 +0000361table SubtractionLayer {
362 base:LayerBase;
363}
364
Nattapat Chaimanowong6b4ed982019-02-26 17:24:13 +0000365table BatchToSpaceNdLayer {
366 base:LayerBase;
367 descriptor:BatchToSpaceNdDescriptor;
368}
369
370table BatchToSpaceNdDescriptor {
371 blockShape:[uint];
372 crops:[uint];
373 dataLayout:DataLayout;
374}
375
Nina Drozd57728782019-02-27 10:53:27 +0000376enum NormalizationAlgorithmChannel : byte {
377 Across = 0,
378 Within = 1
379}
380
381enum NormalizationAlgorithmMethod : byte {
382 LocalBrightness = 0,
383 LocalContrast = 1
384}
385
386table NormalizationLayer {
387 base:LayerBase;
388 descriptor:NormalizationDescriptor;
389}
390
391table NormalizationDescriptor {
392 normChannelType:NormalizationAlgorithmChannel = Across;
393 normMethodType:NormalizationAlgorithmMethod = LocalBrightness;
394 normSize:uint;
395 alpha:float;
396 beta:float;
397 k:float;
398 dataLayout:DataLayout = NCHW;
399}
400
Sadik Armaganac97c8c2019-03-04 17:44:21 +0000401table MeanLayer {
402 base:LayerBase;
403 descriptor:MeanDescriptor;
404}
405
406table MeanDescriptor {
407 axis:[uint];
408 keepDims:bool = false;
409}
410
Nattapat Chaimanowongebb0f9c2019-03-01 12:14:06 +0000411table PadLayer {
412 base:LayerBase;
413 descriptor:PadDescriptor;
414}
415
416table PadDescriptor {
417 padList:[uint];
David Monahan34757812019-06-19 11:47:21 +0100418 padValue:float = 0;
Nattapat Chaimanowongebb0f9c2019-03-01 12:14:06 +0000419}
420
Sadik Armagan8b42a382019-03-01 14:24:49 +0000421table RsqrtLayer {
422 base:LayerBase;
423}
424
ruoyan018e7fa232019-02-28 15:09:07 +0000425table BatchNormalizationLayer {
426 base:LayerBase;
427 descriptor:BatchNormalizationDescriptor;
428 mean:ConstTensor;
429 variance:ConstTensor;
430 beta:ConstTensor;
431 gamma:ConstTensor;
432}
433
434table BatchNormalizationDescriptor {
435 eps:float;
436 dataLayout:DataLayout;
437}
438
Nattapat Chaimanowong6522cdc2019-03-01 16:14:13 +0000439table ResizeBilinearLayer {
440 base:LayerBase;
441 descriptor:ResizeBilinearDescriptor;
442}
443
444table ResizeBilinearDescriptor {
445 targetWidth:uint;
446 targetHeight:uint;
447 dataLayout:DataLayout;
448}
449
Nattapat Chaimanowongb3485212019-03-04 12:35:39 +0000450table StridedSliceLayer {
451 base:LayerBase;
452 descriptor:StridedSliceDescriptor;
453}
454
455table StridedSliceDescriptor {
456 begin:[int];
457 end:[int];
458 stride:[int];
459 beginMask:int;
460 endMask:int;
461 shrinkAxisMask:int;
462 ellipsisMask:int;
463 newAxisMask:int;
464 dataLayout:DataLayout;
465}
466
Jim Flynne242f2d2019-05-22 14:24:13 +0100467table ConcatLayer {
468 base:LayerBase;
469 descriptor:OriginsDescriptor;
470}
471
Jim Flynnac25a1b2019-02-28 10:40:49 +0000472table MergerLayer {
473 base:LayerBase;
474 descriptor:OriginsDescriptor;
475}
476
477table UintVector {
478 data:[uint];
479}
480
481table OriginsDescriptor {
482 concatAxis:uint;
483 numViews:uint;
484 numDimensions:uint;
485 viewOrigins:[UintVector];
486}
487
Jim Flynn18ce3382019-03-08 11:08:30 +0000488table ViewsDescriptor {
489 origins:OriginsDescriptor;
490 viewSizes:[UintVector];
491}
492
493table SplitterLayer {
494 base:LayerBase;
495 descriptor:ViewsDescriptor;
496}
497
Nattapat Chaimanowong3e14a9d2019-03-18 12:37:06 +0000498table DetectionPostProcessLayer {
499 base:LayerBase;
500 descriptor:DetectionPostProcessDescriptor;
501 anchors:ConstTensor;
502}
503
504table DetectionPostProcessDescriptor {
505 maxDetections:uint;
506 maxClassesPerDetection:uint;
507 detectionsPerClass:uint;
508 nmsScoreThreshold:float;
509 nmsIouThreshold:float;
510 numClasses:uint;
511 useRegularNms:bool;
512 scaleX:float;
513 scaleY:float;
514 scaleW:float;
515 scaleH:float;
516}
517
Jim Flynn11af3752019-03-19 17:22:29 +0000518table LstmInputParams {
519 inputToForgetWeights:ConstTensor;
520 inputToCellWeights:ConstTensor;
521 inputToOutputWeights:ConstTensor;
522 recurrentToForgetWeights:ConstTensor;
523 recurrentToCellWeights:ConstTensor;
524 recurrentToOutputWeights:ConstTensor;
525 forgetGateBias:ConstTensor;
526 cellBias:ConstTensor;
527 outputGateBias:ConstTensor;
528
529 inputToInputWeights:ConstTensor;
530 recurrentToInputWeights:ConstTensor;
531 cellToInputWeights:ConstTensor;
532 inputGateBias:ConstTensor;
533
534 projectionWeights:ConstTensor;
535 projectionBias:ConstTensor;
536
537 cellToForgetWeights:ConstTensor;
538 cellToOutputWeights:ConstTensor;
539}
540
541table LstmDescriptor {
542 activationFunc:uint;
543 clippingThresCell:float;
544 clippingThresProj:float;
545 cifgEnabled:bool = true;
546 peepholeEnabled:bool = false;
547 projectionEnabled:bool = false;
548}
549
550table LstmLayer {
551 base:LayerBase;
552 descriptor:LstmDescriptor;
553 inputParams:LstmInputParams;
554}
555
Nattapat Chaimanowonge4294fd2019-03-28 09:56:53 +0000556table DequantizeLayer {
557 base:LayerBase;
558}
559
Nattapat Chaimanowong1f886302019-04-05 13:37:19 +0100560table MergeLayer {
561 base:LayerBase;
562}
563
Sadik Armaganeff363d2019-04-05 15:25:46 +0100564table SwitchLayer {
565 base:LayerBase;
566}
567
Ellen Norris-Thompson51982472019-06-19 11:46:21 +0100568table PreluLayer {
569 base:LayerBase;
570}
571
Aron Virginas-Tarcb549302019-06-21 13:53:38 +0100572table TransposeConvolution2dLayer {
573 base:LayerBase;
574 descriptor:TransposeConvolution2dDescriptor;
575 weights:ConstTensor;
576 biases:ConstTensor;
577}
578
579table TransposeConvolution2dDescriptor {
580 padLeft:uint;
581 padRight:uint;
582 padTop:uint;
583 padBottom:uint;
584 strideX:uint;
585 strideY:uint;
586 biasEnabled:bool = false;
587 dataLayout:DataLayout = NCHW;
588}
589
FinnWilliamsArm6fb339a2019-06-28 15:07:10 +0100590table ResizeLayer {
591 base:LayerBase;
592 descriptor:ResizeDescriptor;
593}
594
595table ResizeDescriptor {
596 targetHeight:uint;
597 targetWidth:uint;
598 method:ResizeMethod = NearestNeighbor;
599 dataLayout:DataLayout;
600}
601
Nattapat Chaimanowong969eea32019-01-30 13:33:11 +0000602union Layer {
Mike Kellyaf484012019-02-20 16:53:11 +0000603 ActivationLayer,
Nattapat Chaimanowong969eea32019-01-30 13:33:11 +0000604 AdditionLayer,
Nattapat Chaimanowong6b4ed982019-02-26 17:24:13 +0000605 BatchToSpaceNdLayer,
ruoyan018e7fa232019-02-28 15:09:07 +0000606 BatchNormalizationLayer,
Conor Kennedy76277882019-02-26 08:29:54 +0000607 ConstantLayer,
Mike Kellya0766c32019-02-19 17:22:07 +0000608 Convolution2dLayer,
Aron Virginas-Tarc04125f2019-02-19 16:31:08 +0000609 DepthwiseConvolution2dLayer,
Sadik Armagandbb0c0c2019-02-21 09:01:41 +0000610 FullyConnectedLayer,
Nattapat Chaimanowong969eea32019-01-30 13:33:11 +0000611 InputLayer,
Sadik Armagan5f450272019-02-12 14:31:45 +0000612 MultiplicationLayer,
Aron Virginas-Tarfc413c02019-02-13 15:41:52 +0000613 OutputLayer,
Nattapat Chaimanowong30b00202019-02-20 17:31:34 +0000614 PermuteLayer,
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000615 Pooling2dLayer,
Saoirse Stewart263829c2019-02-19 15:54:14 +0000616 ReshapeLayer,
Nattapat Chaimanowong45286992019-02-26 15:53:02 +0000617 SoftmaxLayer,
Éanna Ó Catháin58885892019-02-27 16:16:39 +0000618 SpaceToBatchNdLayer,
Aron Virginas-Tar0fe32452019-02-28 13:12:47 +0000619 DivisionLayer,
Nattapat Chaimanowong235cea52019-02-28 16:27:30 +0000620 MinimumLayer,
Aron Virginas-Tar377351e2019-02-27 14:42:31 +0000621 EqualLayer,
Nina Drozd57728782019-02-27 10:53:27 +0000622 MaximumLayer,
Nattapat Chaimanowongebb0f9c2019-03-01 12:14:06 +0000623 NormalizationLayer,
Sadik Armagan8b42a382019-03-01 14:24:49 +0000624 PadLayer,
Finn Williamsdd2ba7e2019-03-01 11:51:52 +0000625 RsqrtLayer,
Conor Kennedy79ffdf52019-03-01 14:24:54 +0000626 FloorLayer,
Nattapat Chaimanowong6522cdc2019-03-01 16:14:13 +0000627 GreaterLayer,
Conor Kennedyda1f9752019-03-01 14:37:12 +0000628 ResizeBilinearLayer,
Nattapat Chaimanowongb3485212019-03-04 12:35:39 +0000629 SubtractionLayer,
Saoirse Stewarta1ed73a2019-03-04 13:40:12 +0000630 StridedSliceLayer,
Sadik Armaganac97c8c2019-03-04 17:44:21 +0000631 GatherLayer,
Jim Flynnac25a1b2019-02-28 10:40:49 +0000632 MeanLayer,
Narumol Prangnawarat495701f2019-03-07 17:31:34 +0000633 MergerLayer,
Jim Flynn18ce3382019-03-08 11:08:30 +0000634 L2NormalizationLayer,
Nattapat Chaimanowong3e14a9d2019-03-18 12:37:06 +0000635 SplitterLayer,
Jim Flynn11af3752019-03-19 17:22:29 +0000636 DetectionPostProcessLayer,
Derek Lamberti87acb272019-03-27 16:51:31 +0000637 LstmLayer,
Nattapat Chaimanowonge4294fd2019-03-28 09:56:53 +0000638 QuantizeLayer,
Nattapat Chaimanowong1f886302019-04-05 13:37:19 +0100639 DequantizeLayer,
Sadik Armaganeff363d2019-04-05 15:25:46 +0100640 MergeLayer,
Jim Flynne242f2d2019-05-22 14:24:13 +0100641 SwitchLayer,
Aron Virginas-Taraa067142019-06-11 16:01:44 +0100642 ConcatLayer,
Ellen Norris-Thompson51982472019-06-19 11:46:21 +0100643 SpaceToDepthLayer,
Aron Virginas-Tarcb549302019-06-21 13:53:38 +0100644 PreluLayer,
FinnWilliamsArm6fb339a2019-06-28 15:07:10 +0100645 TransposeConvolution2dLayer,
646 ResizeLayer
Nattapat Chaimanowong969eea32019-01-30 13:33:11 +0000647}
648
Saoirse Stewart49dbe0e2019-02-05 17:27:06 +0000649table AnyLayer {
650 layer:Layer;
651}
652
Nattapat Chaimanowong969eea32019-01-30 13:33:11 +0000653// Root type for serialized data is the graph of the network
654table SerializedGraph {
Saoirse Stewart49dbe0e2019-02-05 17:27:06 +0000655 layers:[AnyLayer];
Mike Kelly8c1701a2019-02-11 17:01:27 +0000656 inputIds:[uint];
657 outputIds:[uint];
Nattapat Chaimanowong969eea32019-01-30 13:33:11 +0000658}
659
660root_type SerializedGraph;