xref: /aosp_15_r20/external/armnn/src/armnnSerializer/ArmnnSchema.fbs (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker//
2*89c4ff92SAndroid Build Coastguard Worker// Copyright © 2017,2019-2023 Arm Ltd and Contributors. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker// SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker//
5*89c4ff92SAndroid Build Coastguard Worker
6*89c4ff92SAndroid Build Coastguard Workernamespace armnnSerializer;
7*89c4ff92SAndroid Build Coastguard Worker
8*89c4ff92SAndroid Build Coastguard Workerfile_identifier "ARMN";
9*89c4ff92SAndroid Build Coastguard Worker
10*89c4ff92SAndroid Build Coastguard Workerfile_extension "armnn";
11*89c4ff92SAndroid Build Coastguard Worker
12*89c4ff92SAndroid Build Coastguard Workerenum ActivationFunction : byte {
13*89c4ff92SAndroid Build Coastguard Worker    Sigmoid = 0,
14*89c4ff92SAndroid Build Coastguard Worker    TanH = 1,
15*89c4ff92SAndroid Build Coastguard Worker    Linear = 2,
16*89c4ff92SAndroid Build Coastguard Worker    ReLu = 3,
17*89c4ff92SAndroid Build Coastguard Worker    BoundedReLu = 4,
18*89c4ff92SAndroid Build Coastguard Worker    SoftReLu = 5,
19*89c4ff92SAndroid Build Coastguard Worker    LeakyReLu = 6,
20*89c4ff92SAndroid Build Coastguard Worker    Abs = 7,
21*89c4ff92SAndroid Build Coastguard Worker    Sqrt = 8,
22*89c4ff92SAndroid Build Coastguard Worker    Square = 9,
23*89c4ff92SAndroid Build Coastguard Worker    Elu = 10,
24*89c4ff92SAndroid Build Coastguard Worker    HardSwish = 11
25*89c4ff92SAndroid Build Coastguard Worker}
26*89c4ff92SAndroid Build Coastguard Worker
27*89c4ff92SAndroid Build Coastguard Workerenum ArgMinMaxFunction : byte {
28*89c4ff92SAndroid Build Coastguard Worker    Min = 0,
29*89c4ff92SAndroid Build Coastguard Worker    Max = 1
30*89c4ff92SAndroid Build Coastguard Worker}
31*89c4ff92SAndroid Build Coastguard Worker
32*89c4ff92SAndroid Build Coastguard Workerenum DataType : byte {
33*89c4ff92SAndroid Build Coastguard Worker    Float16 = 0,
34*89c4ff92SAndroid Build Coastguard Worker    Float32 = 1,
35*89c4ff92SAndroid Build Coastguard Worker    QuantisedAsymm8 = 2, // deprecated
36*89c4ff92SAndroid Build Coastguard Worker    Signed32 = 3,
37*89c4ff92SAndroid Build Coastguard Worker    Boolean = 4,
38*89c4ff92SAndroid Build Coastguard Worker    QuantisedSymm16 = 5, // deprecated
39*89c4ff92SAndroid Build Coastguard Worker    QAsymmU8 = 6,
40*89c4ff92SAndroid Build Coastguard Worker    QSymmS16 = 7,
41*89c4ff92SAndroid Build Coastguard Worker    QAsymmS8 = 8,
42*89c4ff92SAndroid Build Coastguard Worker    QSymmS8 = 9,
43*89c4ff92SAndroid Build Coastguard Worker    Signed64 = 10
44*89c4ff92SAndroid Build Coastguard Worker}
45*89c4ff92SAndroid Build Coastguard Worker
46*89c4ff92SAndroid Build Coastguard Workerenum DataLayout : byte {
47*89c4ff92SAndroid Build Coastguard Worker    NHWC = 0,
48*89c4ff92SAndroid Build Coastguard Worker    NCHW = 1,
49*89c4ff92SAndroid Build Coastguard Worker    NDHWC = 2,
50*89c4ff92SAndroid Build Coastguard Worker    NCDHW = 3
51*89c4ff92SAndroid Build Coastguard Worker}
52*89c4ff92SAndroid Build Coastguard Worker
53*89c4ff92SAndroid Build Coastguard Workerenum ReduceOperation: byte {
54*89c4ff92SAndroid Build Coastguard Worker    Sum  = 0,
55*89c4ff92SAndroid Build Coastguard Worker    Max  = 1,
56*89c4ff92SAndroid Build Coastguard Worker    Mean = 2,
57*89c4ff92SAndroid Build Coastguard Worker    Min  = 3,
58*89c4ff92SAndroid Build Coastguard Worker    Prod  = 4
59*89c4ff92SAndroid Build Coastguard Worker}
60*89c4ff92SAndroid Build Coastguard Worker
61*89c4ff92SAndroid Build Coastguard Workerenum ResizeMethod: byte {
62*89c4ff92SAndroid Build Coastguard Worker    NearestNeighbor = 0,
63*89c4ff92SAndroid Build Coastguard Worker    Bilinear = 1,
64*89c4ff92SAndroid Build Coastguard Worker}
65*89c4ff92SAndroid Build Coastguard Worker
66*89c4ff92SAndroid Build Coastguard Workertable TensorInfo {
67*89c4ff92SAndroid Build Coastguard Worker    dimensions:[uint];
68*89c4ff92SAndroid Build Coastguard Worker    dataType:DataType;
69*89c4ff92SAndroid Build Coastguard Worker    quantizationScale:float = 1.0; // @deprecated Use quantizationScales instead
70*89c4ff92SAndroid Build Coastguard Worker    quantizationOffset:int = 0;
71*89c4ff92SAndroid Build Coastguard Worker    quantizationScales:[float];
72*89c4ff92SAndroid Build Coastguard Worker    quantizationDim:uint;
73*89c4ff92SAndroid Build Coastguard Worker    dimensionality:uint = 1;
74*89c4ff92SAndroid Build Coastguard Worker    dimensionSpecificity:[bool];
75*89c4ff92SAndroid Build Coastguard Worker    isConstant:bool = false;
76*89c4ff92SAndroid Build Coastguard Worker}
77*89c4ff92SAndroid Build Coastguard Worker
78*89c4ff92SAndroid Build Coastguard Workerstruct Connection {
79*89c4ff92SAndroid Build Coastguard Worker    sourceLayerIndex:uint;
80*89c4ff92SAndroid Build Coastguard Worker    outputSlotIndex:uint;
81*89c4ff92SAndroid Build Coastguard Worker}
82*89c4ff92SAndroid Build Coastguard Worker
83*89c4ff92SAndroid Build Coastguard Workertable ByteData {
84*89c4ff92SAndroid Build Coastguard Worker    data:[byte];
85*89c4ff92SAndroid Build Coastguard Worker}
86*89c4ff92SAndroid Build Coastguard Worker
87*89c4ff92SAndroid Build Coastguard Workertable ShortData {
88*89c4ff92SAndroid Build Coastguard Worker    data:[short];
89*89c4ff92SAndroid Build Coastguard Worker}
90*89c4ff92SAndroid Build Coastguard Worker
91*89c4ff92SAndroid Build Coastguard Workertable IntData {
92*89c4ff92SAndroid Build Coastguard Worker    data:[int];
93*89c4ff92SAndroid Build Coastguard Worker}
94*89c4ff92SAndroid Build Coastguard Worker
95*89c4ff92SAndroid Build Coastguard Workertable LongData {
96*89c4ff92SAndroid Build Coastguard Worker    data:[long];
97*89c4ff92SAndroid Build Coastguard Worker}
98*89c4ff92SAndroid Build Coastguard Worker
99*89c4ff92SAndroid Build Coastguard Workerunion ConstTensorData { ByteData, ShortData, IntData, LongData }
100*89c4ff92SAndroid Build Coastguard Worker
101*89c4ff92SAndroid Build Coastguard Workertable ConstTensor {
102*89c4ff92SAndroid Build Coastguard Worker    info:TensorInfo;
103*89c4ff92SAndroid Build Coastguard Worker    data:ConstTensorData;
104*89c4ff92SAndroid Build Coastguard Worker}
105*89c4ff92SAndroid Build Coastguard Worker
106*89c4ff92SAndroid Build Coastguard Workertable InputSlot {
107*89c4ff92SAndroid Build Coastguard Worker    index:uint;
108*89c4ff92SAndroid Build Coastguard Worker    connection:Connection;
109*89c4ff92SAndroid Build Coastguard Worker}
110*89c4ff92SAndroid Build Coastguard Worker
111*89c4ff92SAndroid Build Coastguard Workertable OutputSlot {
112*89c4ff92SAndroid Build Coastguard Worker    index:uint;
113*89c4ff92SAndroid Build Coastguard Worker    tensorInfo:TensorInfo;
114*89c4ff92SAndroid Build Coastguard Worker}
115*89c4ff92SAndroid Build Coastguard Worker
116*89c4ff92SAndroid Build Coastguard Workerenum LayerType : uint {
117*89c4ff92SAndroid Build Coastguard Worker    Addition = 0,
118*89c4ff92SAndroid Build Coastguard Worker    Input = 1,
119*89c4ff92SAndroid Build Coastguard Worker    Multiplication = 2,
120*89c4ff92SAndroid Build Coastguard Worker    Output = 3,
121*89c4ff92SAndroid Build Coastguard Worker    Pooling2d = 4,
122*89c4ff92SAndroid Build Coastguard Worker    Reshape = 5,
123*89c4ff92SAndroid Build Coastguard Worker    Softmax = 6,
124*89c4ff92SAndroid Build Coastguard Worker    Convolution2d = 7,
125*89c4ff92SAndroid Build Coastguard Worker    DepthwiseConvolution2d = 8,
126*89c4ff92SAndroid Build Coastguard Worker    Activation = 9,
127*89c4ff92SAndroid Build Coastguard Worker    Permute = 10,
128*89c4ff92SAndroid Build Coastguard Worker    FullyConnected = 11,
129*89c4ff92SAndroid Build Coastguard Worker    Constant = 12,
130*89c4ff92SAndroid Build Coastguard Worker    SpaceToBatchNd = 13,
131*89c4ff92SAndroid Build Coastguard Worker    BatchToSpaceNd = 14,
132*89c4ff92SAndroid Build Coastguard Worker    Division = 15,
133*89c4ff92SAndroid Build Coastguard Worker    Minimum = 16,
134*89c4ff92SAndroid Build Coastguard Worker    Equal = 17,
135*89c4ff92SAndroid Build Coastguard Worker    Maximum = 18,
136*89c4ff92SAndroid Build Coastguard Worker    Normalization = 19,
137*89c4ff92SAndroid Build Coastguard Worker    Pad = 20,
138*89c4ff92SAndroid Build Coastguard Worker    Rsqrt = 21,
139*89c4ff92SAndroid Build Coastguard Worker    Floor = 22,
140*89c4ff92SAndroid Build Coastguard Worker    BatchNormalization = 23,
141*89c4ff92SAndroid Build Coastguard Worker    Greater = 24,
142*89c4ff92SAndroid Build Coastguard Worker    ResizeBilinear = 25,
143*89c4ff92SAndroid Build Coastguard Worker    Subtraction = 26,
144*89c4ff92SAndroid Build Coastguard Worker    StridedSlice = 27,
145*89c4ff92SAndroid Build Coastguard Worker    Gather = 28,
146*89c4ff92SAndroid Build Coastguard Worker    Mean = 29,
147*89c4ff92SAndroid Build Coastguard Worker    Merger = 30,
148*89c4ff92SAndroid Build Coastguard Worker    L2Normalization = 31,
149*89c4ff92SAndroid Build Coastguard Worker    Splitter = 32,
150*89c4ff92SAndroid Build Coastguard Worker    DetectionPostProcess = 33,
151*89c4ff92SAndroid Build Coastguard Worker    Lstm = 34,
152*89c4ff92SAndroid Build Coastguard Worker    Quantize = 35,
153*89c4ff92SAndroid Build Coastguard Worker    Dequantize = 36,
154*89c4ff92SAndroid Build Coastguard Worker    Merge = 37,
155*89c4ff92SAndroid Build Coastguard Worker    Switch = 38,
156*89c4ff92SAndroid Build Coastguard Worker    Concat = 39,
157*89c4ff92SAndroid Build Coastguard Worker    SpaceToDepth = 40,
158*89c4ff92SAndroid Build Coastguard Worker    Prelu = 41,
159*89c4ff92SAndroid Build Coastguard Worker    TransposeConvolution2d = 42,
160*89c4ff92SAndroid Build Coastguard Worker    Resize = 43,
161*89c4ff92SAndroid Build Coastguard Worker    Stack = 44,
162*89c4ff92SAndroid Build Coastguard Worker    QuantizedLstm = 45,
163*89c4ff92SAndroid Build Coastguard Worker    Abs = 46,
164*89c4ff92SAndroid Build Coastguard Worker    ArgMinMax = 47,
165*89c4ff92SAndroid Build Coastguard Worker    Slice = 48,
166*89c4ff92SAndroid Build Coastguard Worker    DepthToSpace = 49,
167*89c4ff92SAndroid Build Coastguard Worker    InstanceNormalization = 50,
168*89c4ff92SAndroid Build Coastguard Worker    LogSoftmax = 51,
169*89c4ff92SAndroid Build Coastguard Worker    Comparison = 52,
170*89c4ff92SAndroid Build Coastguard Worker    StandIn = 53,
171*89c4ff92SAndroid Build Coastguard Worker    ElementwiseUnary = 54,
172*89c4ff92SAndroid Build Coastguard Worker    Transpose = 55,
173*89c4ff92SAndroid Build Coastguard Worker    QLstm = 56,
174*89c4ff92SAndroid Build Coastguard Worker    Fill = 57,
175*89c4ff92SAndroid Build Coastguard Worker    Rank = 58,
176*89c4ff92SAndroid Build Coastguard Worker    LogicalBinary = 59,
177*89c4ff92SAndroid Build Coastguard Worker    Reduce = 60,
178*89c4ff92SAndroid Build Coastguard Worker    Cast = 61,
179*89c4ff92SAndroid Build Coastguard Worker    Shape = 62,
180*89c4ff92SAndroid Build Coastguard Worker    UnidirectionalSequenceLstm = 63,
181*89c4ff92SAndroid Build Coastguard Worker    ChannelShuffle = 64,
182*89c4ff92SAndroid Build Coastguard Worker    Convolution3d = 65,
183*89c4ff92SAndroid Build Coastguard Worker    Pooling3d = 66,
184*89c4ff92SAndroid Build Coastguard Worker    GatherNd = 67,
185*89c4ff92SAndroid Build Coastguard Worker    BatchMatMul = 68,
186*89c4ff92SAndroid Build Coastguard Worker    ElementwiseBinary = 69,
187*89c4ff92SAndroid Build Coastguard Worker}
188*89c4ff92SAndroid Build Coastguard Worker
189*89c4ff92SAndroid Build Coastguard Worker// Base layer table to be used as part of other layers
190*89c4ff92SAndroid Build Coastguard Workertable LayerBase {
191*89c4ff92SAndroid Build Coastguard Worker    index:uint;
192*89c4ff92SAndroid Build Coastguard Worker    layerName:string;
193*89c4ff92SAndroid Build Coastguard Worker    layerType:LayerType;
194*89c4ff92SAndroid Build Coastguard Worker    inputSlots:[InputSlot];
195*89c4ff92SAndroid Build Coastguard Worker    outputSlots:[OutputSlot];
196*89c4ff92SAndroid Build Coastguard Worker}
197*89c4ff92SAndroid Build Coastguard Worker
198*89c4ff92SAndroid Build Coastguard Workertable BindableLayerBase {
199*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
200*89c4ff92SAndroid Build Coastguard Worker    layerBindingId:int;
201*89c4ff92SAndroid Build Coastguard Worker}
202*89c4ff92SAndroid Build Coastguard Worker
203*89c4ff92SAndroid Build Coastguard Worker// Table for each layer defined below
204*89c4ff92SAndroid Build Coastguard Worker
205*89c4ff92SAndroid Build Coastguard Worker/// @deprecated Use ElementwiseUnaryLayer instead
206*89c4ff92SAndroid Build Coastguard Workertable AbsLayer {
207*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
208*89c4ff92SAndroid Build Coastguard Worker}
209*89c4ff92SAndroid Build Coastguard Worker
210*89c4ff92SAndroid Build Coastguard Workertable ActivationLayer {
211*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
212*89c4ff92SAndroid Build Coastguard Worker    descriptor:ActivationDescriptor;
213*89c4ff92SAndroid Build Coastguard Worker}
214*89c4ff92SAndroid Build Coastguard Worker
215*89c4ff92SAndroid Build Coastguard Workertable ActivationDescriptor {
216*89c4ff92SAndroid Build Coastguard Worker    activationFunction:ActivationFunction = Sigmoid;
217*89c4ff92SAndroid Build Coastguard Worker    a:float;
218*89c4ff92SAndroid Build Coastguard Worker    b:float;
219*89c4ff92SAndroid Build Coastguard Worker}
220*89c4ff92SAndroid Build Coastguard Worker
221*89c4ff92SAndroid Build Coastguard Workertable AdditionLayer {
222*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
223*89c4ff92SAndroid Build Coastguard Worker}
224*89c4ff92SAndroid Build Coastguard Worker
225*89c4ff92SAndroid Build Coastguard Workertable ArgMinMaxLayer {
226*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
227*89c4ff92SAndroid Build Coastguard Worker    descriptor:ArgMinMaxDescriptor;
228*89c4ff92SAndroid Build Coastguard Worker}
229*89c4ff92SAndroid Build Coastguard Worker
230*89c4ff92SAndroid Build Coastguard Workertable ArgMinMaxDescriptor{
231*89c4ff92SAndroid Build Coastguard Worker    argMinMaxFunction:ArgMinMaxFunction;
232*89c4ff92SAndroid Build Coastguard Worker    axis:int;
233*89c4ff92SAndroid Build Coastguard Worker}
234*89c4ff92SAndroid Build Coastguard Worker
235*89c4ff92SAndroid Build Coastguard Workertable CastLayer {
236*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
237*89c4ff92SAndroid Build Coastguard Worker}
238*89c4ff92SAndroid Build Coastguard Worker
239*89c4ff92SAndroid Build Coastguard Workertable ChannelShuffleLayer {
240*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
241*89c4ff92SAndroid Build Coastguard Worker    descriptor:ChannelShuffleDescriptor;
242*89c4ff92SAndroid Build Coastguard Worker}
243*89c4ff92SAndroid Build Coastguard Worker
244*89c4ff92SAndroid Build Coastguard Workertable ChannelShuffleDescriptor {
245*89c4ff92SAndroid Build Coastguard Worker    axis:uint = 0;
246*89c4ff92SAndroid Build Coastguard Worker    numGroups:uint = 0;
247*89c4ff92SAndroid Build Coastguard Worker}
248*89c4ff92SAndroid Build Coastguard Worker
249*89c4ff92SAndroid Build Coastguard Workerenum ComparisonOperation : byte {
250*89c4ff92SAndroid Build Coastguard Worker    Equal = 0,
251*89c4ff92SAndroid Build Coastguard Worker    Greater = 1,
252*89c4ff92SAndroid Build Coastguard Worker    GreaterOrEqual = 2,
253*89c4ff92SAndroid Build Coastguard Worker    Less = 3,
254*89c4ff92SAndroid Build Coastguard Worker    LessOrEqual = 4,
255*89c4ff92SAndroid Build Coastguard Worker    NotEqual = 5
256*89c4ff92SAndroid Build Coastguard Worker}
257*89c4ff92SAndroid Build Coastguard Worker
258*89c4ff92SAndroid Build Coastguard Workertable ComparisonDescriptor {
259*89c4ff92SAndroid Build Coastguard Worker    operation:ComparisonOperation;
260*89c4ff92SAndroid Build Coastguard Worker}
261*89c4ff92SAndroid Build Coastguard Worker
262*89c4ff92SAndroid Build Coastguard Workertable ComparisonLayer {
263*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
264*89c4ff92SAndroid Build Coastguard Worker    descriptor:ComparisonDescriptor;
265*89c4ff92SAndroid Build Coastguard Worker}
266*89c4ff92SAndroid Build Coastguard Worker
267*89c4ff92SAndroid Build Coastguard Workertable ConstantLayer {
268*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
269*89c4ff92SAndroid Build Coastguard Worker    input:ConstTensor;
270*89c4ff92SAndroid Build Coastguard Worker}
271*89c4ff92SAndroid Build Coastguard Worker
272*89c4ff92SAndroid Build Coastguard Workertable Convolution2dLayer {
273*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
274*89c4ff92SAndroid Build Coastguard Worker    descriptor:Convolution2dDescriptor;
275*89c4ff92SAndroid Build Coastguard Worker    weights:ConstTensor;
276*89c4ff92SAndroid Build Coastguard Worker    biases:ConstTensor;
277*89c4ff92SAndroid Build Coastguard Worker}
278*89c4ff92SAndroid Build Coastguard Worker
279*89c4ff92SAndroid Build Coastguard Workertable Convolution2dDescriptor {
280*89c4ff92SAndroid Build Coastguard Worker    padLeft:uint;
281*89c4ff92SAndroid Build Coastguard Worker    padRight:uint;
282*89c4ff92SAndroid Build Coastguard Worker    padTop:uint;
283*89c4ff92SAndroid Build Coastguard Worker    padBottom:uint;
284*89c4ff92SAndroid Build Coastguard Worker    strideX:uint;
285*89c4ff92SAndroid Build Coastguard Worker    strideY:uint;
286*89c4ff92SAndroid Build Coastguard Worker    dilationX:uint = 1;
287*89c4ff92SAndroid Build Coastguard Worker    dilationY:uint = 1;
288*89c4ff92SAndroid Build Coastguard Worker    biasEnabled:bool = false;
289*89c4ff92SAndroid Build Coastguard Worker    dataLayout:DataLayout = NCHW;
290*89c4ff92SAndroid Build Coastguard Worker}
291*89c4ff92SAndroid Build Coastguard Worker
292*89c4ff92SAndroid Build Coastguard Workertable Convolution3dLayer {
293*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
294*89c4ff92SAndroid Build Coastguard Worker    descriptor:Convolution3dDescriptor;
295*89c4ff92SAndroid Build Coastguard Worker}
296*89c4ff92SAndroid Build Coastguard Worker
297*89c4ff92SAndroid Build Coastguard Workertable Convolution3dDescriptor {
298*89c4ff92SAndroid Build Coastguard Worker    padLeft:uint;
299*89c4ff92SAndroid Build Coastguard Worker    padRight:uint;
300*89c4ff92SAndroid Build Coastguard Worker    padTop:uint;
301*89c4ff92SAndroid Build Coastguard Worker    padBottom:uint;
302*89c4ff92SAndroid Build Coastguard Worker    padFront:uint;
303*89c4ff92SAndroid Build Coastguard Worker    padBack:uint;
304*89c4ff92SAndroid Build Coastguard Worker    strideX:uint;
305*89c4ff92SAndroid Build Coastguard Worker    strideY:uint;
306*89c4ff92SAndroid Build Coastguard Worker    strideZ:uint;
307*89c4ff92SAndroid Build Coastguard Worker    dilationX:uint = 1;
308*89c4ff92SAndroid Build Coastguard Worker    dilationY:uint = 1;
309*89c4ff92SAndroid Build Coastguard Worker    dilationZ:uint = 1;
310*89c4ff92SAndroid Build Coastguard Worker    biasEnabled:bool = false;
311*89c4ff92SAndroid Build Coastguard Worker    dataLayout:DataLayout = NDHWC;
312*89c4ff92SAndroid Build Coastguard Worker}
313*89c4ff92SAndroid Build Coastguard Worker
314*89c4ff92SAndroid Build Coastguard Workertable DepthToSpaceLayer {
315*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
316*89c4ff92SAndroid Build Coastguard Worker    descriptor:DepthToSpaceDescriptor;
317*89c4ff92SAndroid Build Coastguard Worker}
318*89c4ff92SAndroid Build Coastguard Worker
319*89c4ff92SAndroid Build Coastguard Workertable DepthToSpaceDescriptor {
320*89c4ff92SAndroid Build Coastguard Worker    blockSize:uint;
321*89c4ff92SAndroid Build Coastguard Worker    dataLayout:DataLayout;
322*89c4ff92SAndroid Build Coastguard Worker}
323*89c4ff92SAndroid Build Coastguard Worker
324*89c4ff92SAndroid Build Coastguard Workertable DivisionLayer {
325*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
326*89c4ff92SAndroid Build Coastguard Worker}
327*89c4ff92SAndroid Build Coastguard Worker
328*89c4ff92SAndroid Build Coastguard Workerenum BinaryOperation : byte {
329*89c4ff92SAndroid Build Coastguard Worker    Add     = 0,
330*89c4ff92SAndroid Build Coastguard Worker    Div     = 1,
331*89c4ff92SAndroid Build Coastguard Worker    Maximum = 2,
332*89c4ff92SAndroid Build Coastguard Worker    Minimum = 3,
333*89c4ff92SAndroid Build Coastguard Worker    Mul     = 4,
334*89c4ff92SAndroid Build Coastguard Worker    Sub     = 5
335*89c4ff92SAndroid Build Coastguard Worker}
336*89c4ff92SAndroid Build Coastguard Worker
337*89c4ff92SAndroid Build Coastguard Workertable ElementwiseBinaryDescriptor {
338*89c4ff92SAndroid Build Coastguard Worker    operation:BinaryOperation;
339*89c4ff92SAndroid Build Coastguard Worker}
340*89c4ff92SAndroid Build Coastguard Worker
341*89c4ff92SAndroid Build Coastguard Workertable ElementwiseBinaryLayer {
342*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
343*89c4ff92SAndroid Build Coastguard Worker    descriptor:ElementwiseBinaryDescriptor;
344*89c4ff92SAndroid Build Coastguard Worker}
345*89c4ff92SAndroid Build Coastguard Worker
346*89c4ff92SAndroid Build Coastguard Workerenum UnaryOperation : byte {
347*89c4ff92SAndroid Build Coastguard Worker    Abs = 0,
348*89c4ff92SAndroid Build Coastguard Worker    Rsqrt = 1,
349*89c4ff92SAndroid Build Coastguard Worker    Sqrt = 2,
350*89c4ff92SAndroid Build Coastguard Worker    Exp = 3,
351*89c4ff92SAndroid Build Coastguard Worker    Neg = 4,
352*89c4ff92SAndroid Build Coastguard Worker    LogicalNot = 5,
353*89c4ff92SAndroid Build Coastguard Worker    Log = 6,
354*89c4ff92SAndroid Build Coastguard Worker    Sin = 7,
355*89c4ff92SAndroid Build Coastguard Worker    Ceil = 8
356*89c4ff92SAndroid Build Coastguard Worker}
357*89c4ff92SAndroid Build Coastguard Worker
358*89c4ff92SAndroid Build Coastguard Workertable ElementwiseUnaryDescriptor {
359*89c4ff92SAndroid Build Coastguard Worker    operation:UnaryOperation;
360*89c4ff92SAndroid Build Coastguard Worker}
361*89c4ff92SAndroid Build Coastguard Worker
362*89c4ff92SAndroid Build Coastguard Workertable ElementwiseUnaryLayer {
363*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
364*89c4ff92SAndroid Build Coastguard Worker    descriptor:ElementwiseUnaryDescriptor;
365*89c4ff92SAndroid Build Coastguard Worker}
366*89c4ff92SAndroid Build Coastguard Worker
367*89c4ff92SAndroid Build Coastguard Worker/// @deprecated Use ComparisonLayer instead
368*89c4ff92SAndroid Build Coastguard Workertable EqualLayer {
369*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
370*89c4ff92SAndroid Build Coastguard Worker}
371*89c4ff92SAndroid Build Coastguard Worker
372*89c4ff92SAndroid Build Coastguard Workertable FillLayer {
373*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
374*89c4ff92SAndroid Build Coastguard Worker    descriptor:FillDescriptor;
375*89c4ff92SAndroid Build Coastguard Worker}
376*89c4ff92SAndroid Build Coastguard Worker
377*89c4ff92SAndroid Build Coastguard Workertable FillDescriptor {
378*89c4ff92SAndroid Build Coastguard Worker    value:float;
379*89c4ff92SAndroid Build Coastguard Worker}
380*89c4ff92SAndroid Build Coastguard Worker
381*89c4ff92SAndroid Build Coastguard Workertable FloorLayer{
382*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
383*89c4ff92SAndroid Build Coastguard Worker}
384*89c4ff92SAndroid Build Coastguard Worker
385*89c4ff92SAndroid Build Coastguard Workertable FullyConnectedLayer {
386*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
387*89c4ff92SAndroid Build Coastguard Worker    descriptor:FullyConnectedDescriptor;
388*89c4ff92SAndroid Build Coastguard Worker    weights:ConstTensor; // ConstTensors are now passed as inputs.
389*89c4ff92SAndroid Build Coastguard Worker    biases:ConstTensor;
390*89c4ff92SAndroid Build Coastguard Worker}
391*89c4ff92SAndroid Build Coastguard Worker
392*89c4ff92SAndroid Build Coastguard Workertable FullyConnectedDescriptor {
393*89c4ff92SAndroid Build Coastguard Worker    biasEnabled:bool = false;
394*89c4ff92SAndroid Build Coastguard Worker    transposeWeightsMatrix:bool = false;
395*89c4ff92SAndroid Build Coastguard Worker    constantWeights:bool = true;
396*89c4ff92SAndroid Build Coastguard Worker}
397*89c4ff92SAndroid Build Coastguard Worker
398*89c4ff92SAndroid Build Coastguard Workertable GatherLayer {
399*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
400*89c4ff92SAndroid Build Coastguard Worker    descriptor:GatherDescriptor;
401*89c4ff92SAndroid Build Coastguard Worker}
402*89c4ff92SAndroid Build Coastguard Worker
403*89c4ff92SAndroid Build Coastguard Workertable GatherDescriptor {
404*89c4ff92SAndroid Build Coastguard Worker    axis:int = 0;
405*89c4ff92SAndroid Build Coastguard Worker}
406*89c4ff92SAndroid Build Coastguard Worker
407*89c4ff92SAndroid Build Coastguard Workertable GatherNdLayer {
408*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
409*89c4ff92SAndroid Build Coastguard Worker}
410*89c4ff92SAndroid Build Coastguard Worker
411*89c4ff92SAndroid Build Coastguard Worker/// @deprecated Use ComparisonLayer instead
412*89c4ff92SAndroid Build Coastguard Workertable GreaterLayer {
413*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
414*89c4ff92SAndroid Build Coastguard Worker}
415*89c4ff92SAndroid Build Coastguard Worker
416*89c4ff92SAndroid Build Coastguard Workertable InputLayer {
417*89c4ff92SAndroid Build Coastguard Worker    base:BindableLayerBase;
418*89c4ff92SAndroid Build Coastguard Worker}
419*89c4ff92SAndroid Build Coastguard Worker
420*89c4ff92SAndroid Build Coastguard Workertable InstanceNormalizationLayer {
421*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
422*89c4ff92SAndroid Build Coastguard Worker    descriptor:InstanceNormalizationDescriptor;
423*89c4ff92SAndroid Build Coastguard Worker}
424*89c4ff92SAndroid Build Coastguard Worker
425*89c4ff92SAndroid Build Coastguard Workertable InstanceNormalizationDescriptor {
426*89c4ff92SAndroid Build Coastguard Worker    gamma:float;
427*89c4ff92SAndroid Build Coastguard Worker    beta:float;
428*89c4ff92SAndroid Build Coastguard Worker    eps:float;
429*89c4ff92SAndroid Build Coastguard Worker    dataLayout:DataLayout;
430*89c4ff92SAndroid Build Coastguard Worker}
431*89c4ff92SAndroid Build Coastguard Worker
432*89c4ff92SAndroid Build Coastguard Workertable LogSoftmaxLayer {
433*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
434*89c4ff92SAndroid Build Coastguard Worker    descriptor:LogSoftmaxDescriptor;
435*89c4ff92SAndroid Build Coastguard Worker}
436*89c4ff92SAndroid Build Coastguard Worker
437*89c4ff92SAndroid Build Coastguard Workertable LogSoftmaxDescriptor {
438*89c4ff92SAndroid Build Coastguard Worker    beta:float = 1;
439*89c4ff92SAndroid Build Coastguard Worker    axis:int = -1;
440*89c4ff92SAndroid Build Coastguard Worker}
441*89c4ff92SAndroid Build Coastguard Worker
442*89c4ff92SAndroid Build Coastguard Workertable L2NormalizationLayer {
443*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
444*89c4ff92SAndroid Build Coastguard Worker    descriptor:L2NormalizationDescriptor;
445*89c4ff92SAndroid Build Coastguard Worker}
446*89c4ff92SAndroid Build Coastguard Worker
447*89c4ff92SAndroid Build Coastguard Workertable L2NormalizationDescriptor {
448*89c4ff92SAndroid Build Coastguard Worker    dataLayout:DataLayout = NCHW;
449*89c4ff92SAndroid Build Coastguard Worker    eps:float = 1e-12;
450*89c4ff92SAndroid Build Coastguard Worker}
451*89c4ff92SAndroid Build Coastguard Worker
452*89c4ff92SAndroid Build Coastguard Workerenum LogicalBinaryOperation : byte {
453*89c4ff92SAndroid Build Coastguard Worker    LogicalAnd = 0,
454*89c4ff92SAndroid Build Coastguard Worker    LogicalOr = 1
455*89c4ff92SAndroid Build Coastguard Worker}
456*89c4ff92SAndroid Build Coastguard Worker
457*89c4ff92SAndroid Build Coastguard Workertable LogicalBinaryDescriptor {
458*89c4ff92SAndroid Build Coastguard Worker    operation:LogicalBinaryOperation;
459*89c4ff92SAndroid Build Coastguard Worker}
460*89c4ff92SAndroid Build Coastguard Worker
461*89c4ff92SAndroid Build Coastguard Workertable LogicalBinaryLayer {
462*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
463*89c4ff92SAndroid Build Coastguard Worker    descriptor:LogicalBinaryDescriptor;
464*89c4ff92SAndroid Build Coastguard Worker}
465*89c4ff92SAndroid Build Coastguard Worker
466*89c4ff92SAndroid Build Coastguard Workertable MinimumLayer {
467*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
468*89c4ff92SAndroid Build Coastguard Worker}
469*89c4ff92SAndroid Build Coastguard Worker
470*89c4ff92SAndroid Build Coastguard Workertable MaximumLayer {
471*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
472*89c4ff92SAndroid Build Coastguard Worker}
473*89c4ff92SAndroid Build Coastguard Worker
474*89c4ff92SAndroid Build Coastguard Workertable MultiplicationLayer {
475*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
476*89c4ff92SAndroid Build Coastguard Worker}
477*89c4ff92SAndroid Build Coastguard Worker
478*89c4ff92SAndroid Build Coastguard Workertable Pooling2dLayer {
479*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
480*89c4ff92SAndroid Build Coastguard Worker    descriptor:Pooling2dDescriptor;
481*89c4ff92SAndroid Build Coastguard Worker}
482*89c4ff92SAndroid Build Coastguard Worker
483*89c4ff92SAndroid Build Coastguard Workertable Pooling3dLayer {
484*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
485*89c4ff92SAndroid Build Coastguard Worker    descriptor:Pooling3dDescriptor;
486*89c4ff92SAndroid Build Coastguard Worker}
487*89c4ff92SAndroid Build Coastguard Worker
488*89c4ff92SAndroid Build Coastguard Workerenum PoolingAlgorithm : byte {
489*89c4ff92SAndroid Build Coastguard Worker    Max = 0,
490*89c4ff92SAndroid Build Coastguard Worker    Average = 1,
491*89c4ff92SAndroid Build Coastguard Worker    L2 = 2
492*89c4ff92SAndroid Build Coastguard Worker}
493*89c4ff92SAndroid Build Coastguard Worker
494*89c4ff92SAndroid Build Coastguard Workerenum OutputShapeRounding : byte {
495*89c4ff92SAndroid Build Coastguard Worker    Floor = 0,
496*89c4ff92SAndroid Build Coastguard Worker    Ceiling = 1
497*89c4ff92SAndroid Build Coastguard Worker}
498*89c4ff92SAndroid Build Coastguard Worker
499*89c4ff92SAndroid Build Coastguard Workerenum PaddingMethod : byte {
500*89c4ff92SAndroid Build Coastguard Worker    IgnoreValue = 0,
501*89c4ff92SAndroid Build Coastguard Worker    Exclude = 1
502*89c4ff92SAndroid Build Coastguard Worker}
503*89c4ff92SAndroid Build Coastguard Worker
504*89c4ff92SAndroid Build Coastguard Workertable Pooling2dDescriptor {
505*89c4ff92SAndroid Build Coastguard Worker    poolType:PoolingAlgorithm;
506*89c4ff92SAndroid Build Coastguard Worker    padLeft:uint;
507*89c4ff92SAndroid Build Coastguard Worker    padRight:uint;
508*89c4ff92SAndroid Build Coastguard Worker    padTop:uint;
509*89c4ff92SAndroid Build Coastguard Worker    padBottom:uint;
510*89c4ff92SAndroid Build Coastguard Worker    poolWidth:uint;
511*89c4ff92SAndroid Build Coastguard Worker    poolHeight:uint;
512*89c4ff92SAndroid Build Coastguard Worker    strideX:uint;
513*89c4ff92SAndroid Build Coastguard Worker    strideY:uint;
514*89c4ff92SAndroid Build Coastguard Worker    outputShapeRounding:OutputShapeRounding;
515*89c4ff92SAndroid Build Coastguard Worker    paddingMethod:PaddingMethod;
516*89c4ff92SAndroid Build Coastguard Worker    dataLayout:DataLayout;
517*89c4ff92SAndroid Build Coastguard Worker}
518*89c4ff92SAndroid Build Coastguard Worker
519*89c4ff92SAndroid Build Coastguard Workertable Pooling3dDescriptor {
520*89c4ff92SAndroid Build Coastguard Worker    poolType:PoolingAlgorithm;
521*89c4ff92SAndroid Build Coastguard Worker    padLeft:uint;
522*89c4ff92SAndroid Build Coastguard Worker    padRight:uint;
523*89c4ff92SAndroid Build Coastguard Worker    padTop:uint;
524*89c4ff92SAndroid Build Coastguard Worker    padBottom:uint;
525*89c4ff92SAndroid Build Coastguard Worker    padFront:uint;
526*89c4ff92SAndroid Build Coastguard Worker    padBack:uint;
527*89c4ff92SAndroid Build Coastguard Worker    poolWidth:uint;
528*89c4ff92SAndroid Build Coastguard Worker    poolHeight:uint;
529*89c4ff92SAndroid Build Coastguard Worker    poolDepth:uint;
530*89c4ff92SAndroid Build Coastguard Worker    strideX:uint;
531*89c4ff92SAndroid Build Coastguard Worker    strideY:uint;
532*89c4ff92SAndroid Build Coastguard Worker    strideZ:uint;
533*89c4ff92SAndroid Build Coastguard Worker    outputShapeRounding:OutputShapeRounding;
534*89c4ff92SAndroid Build Coastguard Worker    paddingMethod:PaddingMethod;
535*89c4ff92SAndroid Build Coastguard Worker    dataLayout:DataLayout;
536*89c4ff92SAndroid Build Coastguard Worker}
537*89c4ff92SAndroid Build Coastguard Worker
538*89c4ff92SAndroid Build Coastguard Workertable QuantizeLayer {
539*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
540*89c4ff92SAndroid Build Coastguard Worker}
541*89c4ff92SAndroid Build Coastguard Worker
542*89c4ff92SAndroid Build Coastguard Workertable SoftmaxLayer {
543*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
544*89c4ff92SAndroid Build Coastguard Worker    descriptor:SoftmaxDescriptor;
545*89c4ff92SAndroid Build Coastguard Worker}
546*89c4ff92SAndroid Build Coastguard Worker
547*89c4ff92SAndroid Build Coastguard Workertable SoftmaxDescriptor {
548*89c4ff92SAndroid Build Coastguard Worker    beta:float;
549*89c4ff92SAndroid Build Coastguard Worker    axis:int = -1;
550*89c4ff92SAndroid Build Coastguard Worker}
551*89c4ff92SAndroid Build Coastguard Worker
552*89c4ff92SAndroid Build Coastguard Workertable DepthwiseConvolution2dLayer {
553*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
554*89c4ff92SAndroid Build Coastguard Worker    descriptor:DepthwiseConvolution2dDescriptor;
555*89c4ff92SAndroid Build Coastguard Worker    weights:ConstTensor;
556*89c4ff92SAndroid Build Coastguard Worker    biases:ConstTensor;
557*89c4ff92SAndroid Build Coastguard Worker}
558*89c4ff92SAndroid Build Coastguard Worker
559*89c4ff92SAndroid Build Coastguard Workertable DepthwiseConvolution2dDescriptor {
560*89c4ff92SAndroid Build Coastguard Worker    padLeft:uint;
561*89c4ff92SAndroid Build Coastguard Worker    padRight:uint;
562*89c4ff92SAndroid Build Coastguard Worker    padTop:uint;
563*89c4ff92SAndroid Build Coastguard Worker    padBottom:uint;
564*89c4ff92SAndroid Build Coastguard Worker    strideX:uint;
565*89c4ff92SAndroid Build Coastguard Worker    strideY:uint;
566*89c4ff92SAndroid Build Coastguard Worker    dilationX:uint = 1;
567*89c4ff92SAndroid Build Coastguard Worker    dilationY:uint = 1;
568*89c4ff92SAndroid Build Coastguard Worker    biasEnabled:bool = false;
569*89c4ff92SAndroid Build Coastguard Worker    dataLayout:DataLayout = NCHW;
570*89c4ff92SAndroid Build Coastguard Worker}
571*89c4ff92SAndroid Build Coastguard Worker
572*89c4ff92SAndroid Build Coastguard Workertable OutputLayer {
573*89c4ff92SAndroid Build Coastguard Worker    base:BindableLayerBase;
574*89c4ff92SAndroid Build Coastguard Worker}
575*89c4ff92SAndroid Build Coastguard Worker
576*89c4ff92SAndroid Build Coastguard Workertable ReshapeLayer {
577*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
578*89c4ff92SAndroid Build Coastguard Worker    descriptor:ReshapeDescriptor;
579*89c4ff92SAndroid Build Coastguard Worker}
580*89c4ff92SAndroid Build Coastguard Worker
581*89c4ff92SAndroid Build Coastguard Workertable ReshapeDescriptor {
582*89c4ff92SAndroid Build Coastguard Worker    targetShape:[uint];
583*89c4ff92SAndroid Build Coastguard Worker}
584*89c4ff92SAndroid Build Coastguard Worker
585*89c4ff92SAndroid Build Coastguard Workertable PermuteLayer {
586*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
587*89c4ff92SAndroid Build Coastguard Worker    descriptor:PermuteDescriptor;
588*89c4ff92SAndroid Build Coastguard Worker}
589*89c4ff92SAndroid Build Coastguard Worker
590*89c4ff92SAndroid Build Coastguard Workertable PermuteDescriptor {
591*89c4ff92SAndroid Build Coastguard Worker    dimMappings:[uint];
592*89c4ff92SAndroid Build Coastguard Worker}
593*89c4ff92SAndroid Build Coastguard Worker
594*89c4ff92SAndroid Build Coastguard Workertable ShapeLayer {
595*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
596*89c4ff92SAndroid Build Coastguard Worker}
597*89c4ff92SAndroid Build Coastguard Worker
598*89c4ff92SAndroid Build Coastguard Workertable SpaceToBatchNdLayer {
599*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
600*89c4ff92SAndroid Build Coastguard Worker    descriptor:SpaceToBatchNdDescriptor;
601*89c4ff92SAndroid Build Coastguard Worker}
602*89c4ff92SAndroid Build Coastguard Worker
603*89c4ff92SAndroid Build Coastguard Workertable SpaceToBatchNdDescriptor {
604*89c4ff92SAndroid Build Coastguard Worker    blockShape:[uint];
605*89c4ff92SAndroid Build Coastguard Worker    padList:[uint];
606*89c4ff92SAndroid Build Coastguard Worker    dataLayout:DataLayout;
607*89c4ff92SAndroid Build Coastguard Worker}
608*89c4ff92SAndroid Build Coastguard Worker
609*89c4ff92SAndroid Build Coastguard Workertable SpaceToDepthLayer {
610*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
611*89c4ff92SAndroid Build Coastguard Worker    descriptor:SpaceToDepthDescriptor;
612*89c4ff92SAndroid Build Coastguard Worker}
613*89c4ff92SAndroid Build Coastguard Worker
614*89c4ff92SAndroid Build Coastguard Workertable SpaceToDepthDescriptor {
615*89c4ff92SAndroid Build Coastguard Worker    blockSize:uint;
616*89c4ff92SAndroid Build Coastguard Worker    dataLayout:DataLayout;
617*89c4ff92SAndroid Build Coastguard Worker}
618*89c4ff92SAndroid Build Coastguard Worker
619*89c4ff92SAndroid Build Coastguard Workertable SubtractionLayer {
620*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
621*89c4ff92SAndroid Build Coastguard Worker}
622*89c4ff92SAndroid Build Coastguard Worker
623*89c4ff92SAndroid Build Coastguard Workertable BatchToSpaceNdLayer {
624*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
625*89c4ff92SAndroid Build Coastguard Worker    descriptor:BatchToSpaceNdDescriptor;
626*89c4ff92SAndroid Build Coastguard Worker}
627*89c4ff92SAndroid Build Coastguard Worker
628*89c4ff92SAndroid Build Coastguard Workertable BatchToSpaceNdDescriptor {
629*89c4ff92SAndroid Build Coastguard Worker    blockShape:[uint];
630*89c4ff92SAndroid Build Coastguard Worker    crops:[uint];
631*89c4ff92SAndroid Build Coastguard Worker    dataLayout:DataLayout;
632*89c4ff92SAndroid Build Coastguard Worker}
633*89c4ff92SAndroid Build Coastguard Worker
634*89c4ff92SAndroid Build Coastguard Workerenum NormalizationAlgorithmChannel : byte {
635*89c4ff92SAndroid Build Coastguard Worker    Across = 0,
636*89c4ff92SAndroid Build Coastguard Worker    Within = 1
637*89c4ff92SAndroid Build Coastguard Worker}
638*89c4ff92SAndroid Build Coastguard Worker
639*89c4ff92SAndroid Build Coastguard Workerenum NormalizationAlgorithmMethod : byte {
640*89c4ff92SAndroid Build Coastguard Worker    LocalBrightness = 0,
641*89c4ff92SAndroid Build Coastguard Worker    LocalContrast = 1
642*89c4ff92SAndroid Build Coastguard Worker}
643*89c4ff92SAndroid Build Coastguard Worker
644*89c4ff92SAndroid Build Coastguard Workertable NormalizationLayer {
645*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
646*89c4ff92SAndroid Build Coastguard Worker    descriptor:NormalizationDescriptor;
647*89c4ff92SAndroid Build Coastguard Worker}
648*89c4ff92SAndroid Build Coastguard Worker
649*89c4ff92SAndroid Build Coastguard Workertable NormalizationDescriptor {
650*89c4ff92SAndroid Build Coastguard Worker    normChannelType:NormalizationAlgorithmChannel = Across;
651*89c4ff92SAndroid Build Coastguard Worker    normMethodType:NormalizationAlgorithmMethod = LocalBrightness;
652*89c4ff92SAndroid Build Coastguard Worker    normSize:uint;
653*89c4ff92SAndroid Build Coastguard Worker    alpha:float;
654*89c4ff92SAndroid Build Coastguard Worker    beta:float;
655*89c4ff92SAndroid Build Coastguard Worker    k:float;
656*89c4ff92SAndroid Build Coastguard Worker    dataLayout:DataLayout = NCHW;
657*89c4ff92SAndroid Build Coastguard Worker}
658*89c4ff92SAndroid Build Coastguard Worker
659*89c4ff92SAndroid Build Coastguard Workertable MeanLayer {
660*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
661*89c4ff92SAndroid Build Coastguard Worker    descriptor:MeanDescriptor;
662*89c4ff92SAndroid Build Coastguard Worker}
663*89c4ff92SAndroid Build Coastguard Worker
664*89c4ff92SAndroid Build Coastguard Workertable MeanDescriptor {
665*89c4ff92SAndroid Build Coastguard Worker    axis:[uint];
666*89c4ff92SAndroid Build Coastguard Worker    keepDims:bool = false;
667*89c4ff92SAndroid Build Coastguard Worker}
668*89c4ff92SAndroid Build Coastguard Worker
669*89c4ff92SAndroid Build Coastguard Workertable PadLayer {
670*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
671*89c4ff92SAndroid Build Coastguard Worker    descriptor:PadDescriptor;
672*89c4ff92SAndroid Build Coastguard Worker}
673*89c4ff92SAndroid Build Coastguard Worker
674*89c4ff92SAndroid Build Coastguard Workerenum PaddingMode : byte {
675*89c4ff92SAndroid Build Coastguard Worker    Constant  = 0,
676*89c4ff92SAndroid Build Coastguard Worker    Reflect   = 1,
677*89c4ff92SAndroid Build Coastguard Worker    Symmetric = 2
678*89c4ff92SAndroid Build Coastguard Worker}
679*89c4ff92SAndroid Build Coastguard Worker
680*89c4ff92SAndroid Build Coastguard Workertable PadDescriptor {
681*89c4ff92SAndroid Build Coastguard Worker    padList:[uint];
682*89c4ff92SAndroid Build Coastguard Worker    padValue:float = 0;
683*89c4ff92SAndroid Build Coastguard Worker    paddingMode:PaddingMode = Constant;
684*89c4ff92SAndroid Build Coastguard Worker}
685*89c4ff92SAndroid Build Coastguard Worker
686*89c4ff92SAndroid Build Coastguard Worker/// @deprecated Use ElementwiseUnaryLayer instead
687*89c4ff92SAndroid Build Coastguard Workertable RsqrtLayer {
688*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
689*89c4ff92SAndroid Build Coastguard Worker}
690*89c4ff92SAndroid Build Coastguard Worker
691*89c4ff92SAndroid Build Coastguard Workertable BatchNormalizationLayer {
692*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
693*89c4ff92SAndroid Build Coastguard Worker    descriptor:BatchNormalizationDescriptor;
694*89c4ff92SAndroid Build Coastguard Worker    mean:ConstTensor;
695*89c4ff92SAndroid Build Coastguard Worker    variance:ConstTensor;
696*89c4ff92SAndroid Build Coastguard Worker    beta:ConstTensor;
697*89c4ff92SAndroid Build Coastguard Worker    gamma:ConstTensor;
698*89c4ff92SAndroid Build Coastguard Worker}
699*89c4ff92SAndroid Build Coastguard Worker
700*89c4ff92SAndroid Build Coastguard Workertable BatchNormalizationDescriptor {
701*89c4ff92SAndroid Build Coastguard Worker    eps:float;
702*89c4ff92SAndroid Build Coastguard Worker    dataLayout:DataLayout;
703*89c4ff92SAndroid Build Coastguard Worker}
704*89c4ff92SAndroid Build Coastguard Worker
705*89c4ff92SAndroid Build Coastguard Worker/// @deprecated Use ResizeLayer instead
706*89c4ff92SAndroid Build Coastguard Workertable ResizeBilinearLayer {
707*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
708*89c4ff92SAndroid Build Coastguard Worker    descriptor:ResizeBilinearDescriptor;
709*89c4ff92SAndroid Build Coastguard Worker}
710*89c4ff92SAndroid Build Coastguard Worker
711*89c4ff92SAndroid Build Coastguard Workertable ResizeBilinearDescriptor {
712*89c4ff92SAndroid Build Coastguard Worker    targetWidth:uint;
713*89c4ff92SAndroid Build Coastguard Worker    targetHeight:uint;
714*89c4ff92SAndroid Build Coastguard Worker    dataLayout:DataLayout;
715*89c4ff92SAndroid Build Coastguard Worker    alignCorners:bool;
716*89c4ff92SAndroid Build Coastguard Worker    halfPixelCenters:bool;
717*89c4ff92SAndroid Build Coastguard Worker}
718*89c4ff92SAndroid Build Coastguard Worker
719*89c4ff92SAndroid Build Coastguard Workertable SliceLayer {
720*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
721*89c4ff92SAndroid Build Coastguard Worker    descriptor:SliceDescriptor;
722*89c4ff92SAndroid Build Coastguard Worker}
723*89c4ff92SAndroid Build Coastguard Worker
724*89c4ff92SAndroid Build Coastguard Workertable SliceDescriptor {
725*89c4ff92SAndroid Build Coastguard Worker    begin:[uint];
726*89c4ff92SAndroid Build Coastguard Worker    size:[uint];
727*89c4ff92SAndroid Build Coastguard Worker}
728*89c4ff92SAndroid Build Coastguard Worker
729*89c4ff92SAndroid Build Coastguard Workertable StridedSliceLayer {
730*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
731*89c4ff92SAndroid Build Coastguard Worker    descriptor:StridedSliceDescriptor;
732*89c4ff92SAndroid Build Coastguard Worker}
733*89c4ff92SAndroid Build Coastguard Worker
734*89c4ff92SAndroid Build Coastguard Workertable StridedSliceDescriptor {
735*89c4ff92SAndroid Build Coastguard Worker    begin:[int];
736*89c4ff92SAndroid Build Coastguard Worker    end:[int];
737*89c4ff92SAndroid Build Coastguard Worker    stride:[int];
738*89c4ff92SAndroid Build Coastguard Worker    beginMask:int;
739*89c4ff92SAndroid Build Coastguard Worker    endMask:int;
740*89c4ff92SAndroid Build Coastguard Worker    shrinkAxisMask:int;
741*89c4ff92SAndroid Build Coastguard Worker    ellipsisMask:int;
742*89c4ff92SAndroid Build Coastguard Worker    newAxisMask:int;
743*89c4ff92SAndroid Build Coastguard Worker    dataLayout:DataLayout;
744*89c4ff92SAndroid Build Coastguard Worker}
745*89c4ff92SAndroid Build Coastguard Worker
746*89c4ff92SAndroid Build Coastguard Workertable ConcatLayer {
747*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
748*89c4ff92SAndroid Build Coastguard Worker    descriptor:OriginsDescriptor;
749*89c4ff92SAndroid Build Coastguard Worker}
750*89c4ff92SAndroid Build Coastguard Worker
751*89c4ff92SAndroid Build Coastguard Worker/// @deprecated Use ConcatLayer instead
752*89c4ff92SAndroid Build Coastguard Workertable MergerLayer {
753*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
754*89c4ff92SAndroid Build Coastguard Worker    descriptor:OriginsDescriptor;
755*89c4ff92SAndroid Build Coastguard Worker}
756*89c4ff92SAndroid Build Coastguard Worker
757*89c4ff92SAndroid Build Coastguard Workertable UintVector {
758*89c4ff92SAndroid Build Coastguard Worker   data:[uint];
759*89c4ff92SAndroid Build Coastguard Worker}
760*89c4ff92SAndroid Build Coastguard Worker
761*89c4ff92SAndroid Build Coastguard Workertable OriginsDescriptor {
762*89c4ff92SAndroid Build Coastguard Worker   concatAxis:uint;
763*89c4ff92SAndroid Build Coastguard Worker   numViews:uint;
764*89c4ff92SAndroid Build Coastguard Worker   numDimensions:uint;
765*89c4ff92SAndroid Build Coastguard Worker   viewOrigins:[UintVector];
766*89c4ff92SAndroid Build Coastguard Worker}
767*89c4ff92SAndroid Build Coastguard Worker
768*89c4ff92SAndroid Build Coastguard Workertable ViewsDescriptor {
769*89c4ff92SAndroid Build Coastguard Worker   origins:OriginsDescriptor;
770*89c4ff92SAndroid Build Coastguard Worker   viewSizes:[UintVector];
771*89c4ff92SAndroid Build Coastguard Worker}
772*89c4ff92SAndroid Build Coastguard Worker
773*89c4ff92SAndroid Build Coastguard Workertable SplitterLayer {
774*89c4ff92SAndroid Build Coastguard Worker   base:LayerBase;
775*89c4ff92SAndroid Build Coastguard Worker   descriptor:ViewsDescriptor;
776*89c4ff92SAndroid Build Coastguard Worker}
777*89c4ff92SAndroid Build Coastguard Worker
778*89c4ff92SAndroid Build Coastguard Workertable DetectionPostProcessLayer {
779*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
780*89c4ff92SAndroid Build Coastguard Worker    descriptor:DetectionPostProcessDescriptor;
781*89c4ff92SAndroid Build Coastguard Worker    anchors:ConstTensor;
782*89c4ff92SAndroid Build Coastguard Worker}
783*89c4ff92SAndroid Build Coastguard Worker
784*89c4ff92SAndroid Build Coastguard Workertable DetectionPostProcessDescriptor {
785*89c4ff92SAndroid Build Coastguard Worker    maxDetections:uint;
786*89c4ff92SAndroid Build Coastguard Worker    maxClassesPerDetection:uint;
787*89c4ff92SAndroid Build Coastguard Worker    detectionsPerClass:uint;
788*89c4ff92SAndroid Build Coastguard Worker    nmsScoreThreshold:float;
789*89c4ff92SAndroid Build Coastguard Worker    nmsIouThreshold:float;
790*89c4ff92SAndroid Build Coastguard Worker    numClasses:uint;
791*89c4ff92SAndroid Build Coastguard Worker    useRegularNms:bool;
792*89c4ff92SAndroid Build Coastguard Worker    scaleX:float;
793*89c4ff92SAndroid Build Coastguard Worker    scaleY:float;
794*89c4ff92SAndroid Build Coastguard Worker    scaleW:float;
795*89c4ff92SAndroid Build Coastguard Worker    scaleH:float;
796*89c4ff92SAndroid Build Coastguard Worker}
797*89c4ff92SAndroid Build Coastguard Worker
798*89c4ff92SAndroid Build Coastguard Workertable LstmInputParams {
799*89c4ff92SAndroid Build Coastguard Worker    inputToForgetWeights:ConstTensor;
800*89c4ff92SAndroid Build Coastguard Worker    inputToCellWeights:ConstTensor;
801*89c4ff92SAndroid Build Coastguard Worker    inputToOutputWeights:ConstTensor;
802*89c4ff92SAndroid Build Coastguard Worker    recurrentToForgetWeights:ConstTensor;
803*89c4ff92SAndroid Build Coastguard Worker    recurrentToCellWeights:ConstTensor;
804*89c4ff92SAndroid Build Coastguard Worker    recurrentToOutputWeights:ConstTensor;
805*89c4ff92SAndroid Build Coastguard Worker    forgetGateBias:ConstTensor;
806*89c4ff92SAndroid Build Coastguard Worker    cellBias:ConstTensor;
807*89c4ff92SAndroid Build Coastguard Worker    outputGateBias:ConstTensor;
808*89c4ff92SAndroid Build Coastguard Worker
809*89c4ff92SAndroid Build Coastguard Worker    inputToInputWeights:ConstTensor;
810*89c4ff92SAndroid Build Coastguard Worker    recurrentToInputWeights:ConstTensor;
811*89c4ff92SAndroid Build Coastguard Worker    cellToInputWeights:ConstTensor;
812*89c4ff92SAndroid Build Coastguard Worker    inputGateBias:ConstTensor;
813*89c4ff92SAndroid Build Coastguard Worker
814*89c4ff92SAndroid Build Coastguard Worker    projectionWeights:ConstTensor;
815*89c4ff92SAndroid Build Coastguard Worker    projectionBias:ConstTensor;
816*89c4ff92SAndroid Build Coastguard Worker
817*89c4ff92SAndroid Build Coastguard Worker    cellToForgetWeights:ConstTensor;
818*89c4ff92SAndroid Build Coastguard Worker    cellToOutputWeights:ConstTensor;
819*89c4ff92SAndroid Build Coastguard Worker
820*89c4ff92SAndroid Build Coastguard Worker    inputLayerNormWeights:ConstTensor;
821*89c4ff92SAndroid Build Coastguard Worker    forgetLayerNormWeights:ConstTensor;
822*89c4ff92SAndroid Build Coastguard Worker    cellLayerNormWeights:ConstTensor;
823*89c4ff92SAndroid Build Coastguard Worker    outputLayerNormWeights:ConstTensor;
824*89c4ff92SAndroid Build Coastguard Worker}
825*89c4ff92SAndroid Build Coastguard Worker
826*89c4ff92SAndroid Build Coastguard Workertable LstmDescriptor {
827*89c4ff92SAndroid Build Coastguard Worker    activationFunc:uint;
828*89c4ff92SAndroid Build Coastguard Worker    clippingThresCell:float;
829*89c4ff92SAndroid Build Coastguard Worker    clippingThresProj:float;
830*89c4ff92SAndroid Build Coastguard Worker    cifgEnabled:bool = true;
831*89c4ff92SAndroid Build Coastguard Worker    peepholeEnabled:bool = false;
832*89c4ff92SAndroid Build Coastguard Worker    projectionEnabled:bool = false;
833*89c4ff92SAndroid Build Coastguard Worker    layerNormEnabled:bool = false;
834*89c4ff92SAndroid Build Coastguard Worker}
835*89c4ff92SAndroid Build Coastguard Worker
836*89c4ff92SAndroid Build Coastguard Workertable LstmLayer {
837*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
838*89c4ff92SAndroid Build Coastguard Worker    descriptor:LstmDescriptor;
839*89c4ff92SAndroid Build Coastguard Worker    inputParams:LstmInputParams;
840*89c4ff92SAndroid Build Coastguard Worker}
841*89c4ff92SAndroid Build Coastguard Worker
842*89c4ff92SAndroid Build Coastguard Workertable QLstmInputParams {
843*89c4ff92SAndroid Build Coastguard Worker    // Mandatory
844*89c4ff92SAndroid Build Coastguard Worker    inputToForgetWeights:ConstTensor;
845*89c4ff92SAndroid Build Coastguard Worker    inputToCellWeights:ConstTensor;
846*89c4ff92SAndroid Build Coastguard Worker    inputToOutputWeights:ConstTensor;
847*89c4ff92SAndroid Build Coastguard Worker
848*89c4ff92SAndroid Build Coastguard Worker    recurrentToForgetWeights:ConstTensor;
849*89c4ff92SAndroid Build Coastguard Worker    recurrentToCellWeights:ConstTensor;
850*89c4ff92SAndroid Build Coastguard Worker    recurrentToOutputWeights:ConstTensor;
851*89c4ff92SAndroid Build Coastguard Worker
852*89c4ff92SAndroid Build Coastguard Worker    forgetGateBias:ConstTensor;
853*89c4ff92SAndroid Build Coastguard Worker    cellBias:ConstTensor;
854*89c4ff92SAndroid Build Coastguard Worker    outputGateBias:ConstTensor;
855*89c4ff92SAndroid Build Coastguard Worker
856*89c4ff92SAndroid Build Coastguard Worker    // CIFG
857*89c4ff92SAndroid Build Coastguard Worker    inputToInputWeights:ConstTensor;
858*89c4ff92SAndroid Build Coastguard Worker    recurrentToInputWeights:ConstTensor;
859*89c4ff92SAndroid Build Coastguard Worker    inputGateBias:ConstTensor;
860*89c4ff92SAndroid Build Coastguard Worker
861*89c4ff92SAndroid Build Coastguard Worker    // Projection
862*89c4ff92SAndroid Build Coastguard Worker    projectionWeights:ConstTensor;
863*89c4ff92SAndroid Build Coastguard Worker    projectionBias:ConstTensor;
864*89c4ff92SAndroid Build Coastguard Worker
865*89c4ff92SAndroid Build Coastguard Worker    // Peephole
866*89c4ff92SAndroid Build Coastguard Worker    cellToInputWeights:ConstTensor;
867*89c4ff92SAndroid Build Coastguard Worker    cellToForgetWeights:ConstTensor;
868*89c4ff92SAndroid Build Coastguard Worker    cellToOutputWeights:ConstTensor;
869*89c4ff92SAndroid Build Coastguard Worker
870*89c4ff92SAndroid Build Coastguard Worker    // Layer norm
871*89c4ff92SAndroid Build Coastguard Worker    inputLayerNormWeights:ConstTensor;
872*89c4ff92SAndroid Build Coastguard Worker    forgetLayerNormWeights:ConstTensor;
873*89c4ff92SAndroid Build Coastguard Worker    cellLayerNormWeights:ConstTensor;
874*89c4ff92SAndroid Build Coastguard Worker    outputLayerNormWeights:ConstTensor;
875*89c4ff92SAndroid Build Coastguard Worker}
876*89c4ff92SAndroid Build Coastguard Worker
877*89c4ff92SAndroid Build Coastguard Workertable QLstmDescriptor {
878*89c4ff92SAndroid Build Coastguard Worker    cifgEnabled:bool       = true;
879*89c4ff92SAndroid Build Coastguard Worker    peepholeEnabled:bool   = false;
880*89c4ff92SAndroid Build Coastguard Worker    projectionEnabled:bool = false;
881*89c4ff92SAndroid Build Coastguard Worker    layerNormEnabled:bool  = false;
882*89c4ff92SAndroid Build Coastguard Worker
883*89c4ff92SAndroid Build Coastguard Worker    cellClip:float;
884*89c4ff92SAndroid Build Coastguard Worker    projectionClip:float;
885*89c4ff92SAndroid Build Coastguard Worker
886*89c4ff92SAndroid Build Coastguard Worker    inputIntermediateScale:float;
887*89c4ff92SAndroid Build Coastguard Worker    forgetIntermediateScale:float;
888*89c4ff92SAndroid Build Coastguard Worker    cellIntermediateScale:float;
889*89c4ff92SAndroid Build Coastguard Worker    outputIntermediateScale:float;
890*89c4ff92SAndroid Build Coastguard Worker
891*89c4ff92SAndroid Build Coastguard Worker    hiddenStateZeroPoint:int;
892*89c4ff92SAndroid Build Coastguard Worker    hiddenStateScale:float;
893*89c4ff92SAndroid Build Coastguard Worker}
894*89c4ff92SAndroid Build Coastguard Worker
895*89c4ff92SAndroid Build Coastguard Workertable QLstmLayer {
896*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
897*89c4ff92SAndroid Build Coastguard Worker    descriptor:QLstmDescriptor;
898*89c4ff92SAndroid Build Coastguard Worker    inputParams:QLstmInputParams;
899*89c4ff92SAndroid Build Coastguard Worker}
900*89c4ff92SAndroid Build Coastguard Worker
901*89c4ff92SAndroid Build Coastguard Workertable QuantizedLstmInputParams {
902*89c4ff92SAndroid Build Coastguard Worker    inputToInputWeights:ConstTensor;
903*89c4ff92SAndroid Build Coastguard Worker    inputToForgetWeights:ConstTensor;
904*89c4ff92SAndroid Build Coastguard Worker    inputToCellWeights:ConstTensor;
905*89c4ff92SAndroid Build Coastguard Worker    inputToOutputWeights:ConstTensor;
906*89c4ff92SAndroid Build Coastguard Worker
907*89c4ff92SAndroid Build Coastguard Worker    recurrentToInputWeights:ConstTensor;
908*89c4ff92SAndroid Build Coastguard Worker    recurrentToForgetWeights:ConstTensor;
909*89c4ff92SAndroid Build Coastguard Worker    recurrentToCellWeights:ConstTensor;
910*89c4ff92SAndroid Build Coastguard Worker    recurrentToOutputWeights:ConstTensor;
911*89c4ff92SAndroid Build Coastguard Worker
912*89c4ff92SAndroid Build Coastguard Worker    inputGateBias:ConstTensor;
913*89c4ff92SAndroid Build Coastguard Worker    forgetGateBias:ConstTensor;
914*89c4ff92SAndroid Build Coastguard Worker    cellBias:ConstTensor;
915*89c4ff92SAndroid Build Coastguard Worker    outputGateBias:ConstTensor;
916*89c4ff92SAndroid Build Coastguard Worker}
917*89c4ff92SAndroid Build Coastguard Worker
918*89c4ff92SAndroid Build Coastguard Workertable QuantizedLstmLayer {
919*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
920*89c4ff92SAndroid Build Coastguard Worker    inputParams:QuantizedLstmInputParams;
921*89c4ff92SAndroid Build Coastguard Worker}
922*89c4ff92SAndroid Build Coastguard Worker
923*89c4ff92SAndroid Build Coastguard Workertable DequantizeLayer {
924*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
925*89c4ff92SAndroid Build Coastguard Worker}
926*89c4ff92SAndroid Build Coastguard Worker
927*89c4ff92SAndroid Build Coastguard Workertable MergeLayer {
928*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
929*89c4ff92SAndroid Build Coastguard Worker}
930*89c4ff92SAndroid Build Coastguard Worker
931*89c4ff92SAndroid Build Coastguard Workertable SwitchLayer {
932*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
933*89c4ff92SAndroid Build Coastguard Worker}
934*89c4ff92SAndroid Build Coastguard Worker
935*89c4ff92SAndroid Build Coastguard Workertable PreluLayer {
936*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
937*89c4ff92SAndroid Build Coastguard Worker}
938*89c4ff92SAndroid Build Coastguard Worker
939*89c4ff92SAndroid Build Coastguard Workertable TransposeConvolution2dLayer {
940*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
941*89c4ff92SAndroid Build Coastguard Worker    descriptor:TransposeConvolution2dDescriptor;
942*89c4ff92SAndroid Build Coastguard Worker    weights:ConstTensor;
943*89c4ff92SAndroid Build Coastguard Worker    biases:ConstTensor;
944*89c4ff92SAndroid Build Coastguard Worker}
945*89c4ff92SAndroid Build Coastguard Worker
946*89c4ff92SAndroid Build Coastguard Workertable TransposeConvolution2dDescriptor {
947*89c4ff92SAndroid Build Coastguard Worker    padLeft:uint;
948*89c4ff92SAndroid Build Coastguard Worker    padRight:uint;
949*89c4ff92SAndroid Build Coastguard Worker    padTop:uint;
950*89c4ff92SAndroid Build Coastguard Worker    padBottom:uint;
951*89c4ff92SAndroid Build Coastguard Worker    strideX:uint;
952*89c4ff92SAndroid Build Coastguard Worker    strideY:uint;
953*89c4ff92SAndroid Build Coastguard Worker    biasEnabled:bool = false;
954*89c4ff92SAndroid Build Coastguard Worker    dataLayout:DataLayout = NCHW;
955*89c4ff92SAndroid Build Coastguard Worker}
956*89c4ff92SAndroid Build Coastguard Worker
957*89c4ff92SAndroid Build Coastguard Workertable TransposeLayer {
958*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
959*89c4ff92SAndroid Build Coastguard Worker    descriptor:TransposeDescriptor;
960*89c4ff92SAndroid Build Coastguard Worker}
961*89c4ff92SAndroid Build Coastguard Worker
962*89c4ff92SAndroid Build Coastguard Workertable TransposeDescriptor {
963*89c4ff92SAndroid Build Coastguard Worker    dimMappings:[uint];
964*89c4ff92SAndroid Build Coastguard Worker}
965*89c4ff92SAndroid Build Coastguard Worker
966*89c4ff92SAndroid Build Coastguard Workertable ResizeLayer {
967*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
968*89c4ff92SAndroid Build Coastguard Worker    descriptor:ResizeDescriptor;
969*89c4ff92SAndroid Build Coastguard Worker}
970*89c4ff92SAndroid Build Coastguard Worker
971*89c4ff92SAndroid Build Coastguard Workertable ResizeDescriptor {
972*89c4ff92SAndroid Build Coastguard Worker    targetHeight:uint;
973*89c4ff92SAndroid Build Coastguard Worker    targetWidth:uint;
974*89c4ff92SAndroid Build Coastguard Worker    method:ResizeMethod = NearestNeighbor;
975*89c4ff92SAndroid Build Coastguard Worker    dataLayout:DataLayout;
976*89c4ff92SAndroid Build Coastguard Worker    alignCorners:bool;
977*89c4ff92SAndroid Build Coastguard Worker    halfPixelCenters:bool;
978*89c4ff92SAndroid Build Coastguard Worker}
979*89c4ff92SAndroid Build Coastguard Worker
980*89c4ff92SAndroid Build Coastguard Workertable StackLayer {
981*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
982*89c4ff92SAndroid Build Coastguard Worker    descriptor:StackDescriptor;
983*89c4ff92SAndroid Build Coastguard Worker}
984*89c4ff92SAndroid Build Coastguard Worker
985*89c4ff92SAndroid Build Coastguard Workertable StackDescriptor {
986*89c4ff92SAndroid Build Coastguard Worker    axis:uint;
987*89c4ff92SAndroid Build Coastguard Worker    numInputs:uint;
988*89c4ff92SAndroid Build Coastguard Worker    inputShape:[uint];
989*89c4ff92SAndroid Build Coastguard Worker}
990*89c4ff92SAndroid Build Coastguard Worker
991*89c4ff92SAndroid Build Coastguard Workertable StandInDescriptor {
992*89c4ff92SAndroid Build Coastguard Worker    numInputs:uint;
993*89c4ff92SAndroid Build Coastguard Worker    numOutputs:uint;
994*89c4ff92SAndroid Build Coastguard Worker}
995*89c4ff92SAndroid Build Coastguard Worker
996*89c4ff92SAndroid Build Coastguard Workertable StandInLayer {
997*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
998*89c4ff92SAndroid Build Coastguard Worker    descriptor:StandInDescriptor;
999*89c4ff92SAndroid Build Coastguard Worker}
1000*89c4ff92SAndroid Build Coastguard Worker
1001*89c4ff92SAndroid Build Coastguard Workertable RankLayer {
1002*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
1003*89c4ff92SAndroid Build Coastguard Worker}
1004*89c4ff92SAndroid Build Coastguard Worker
1005*89c4ff92SAndroid Build Coastguard Workertable ReduceLayer {
1006*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
1007*89c4ff92SAndroid Build Coastguard Worker    descriptor:ReduceDescriptor;
1008*89c4ff92SAndroid Build Coastguard Worker}
1009*89c4ff92SAndroid Build Coastguard Worker
1010*89c4ff92SAndroid Build Coastguard Workertable ReduceDescriptor {
1011*89c4ff92SAndroid Build Coastguard Worker    keepDims:bool = false;
1012*89c4ff92SAndroid Build Coastguard Worker    axis:[uint];
1013*89c4ff92SAndroid Build Coastguard Worker    reduceOperation:ReduceOperation = Sum;
1014*89c4ff92SAndroid Build Coastguard Worker}
1015*89c4ff92SAndroid Build Coastguard Worker
1016*89c4ff92SAndroid Build Coastguard Workertable UnidirectionalSequenceLstmDescriptor {
1017*89c4ff92SAndroid Build Coastguard Worker    activationFunc:uint;
1018*89c4ff92SAndroid Build Coastguard Worker    clippingThresCell:float;
1019*89c4ff92SAndroid Build Coastguard Worker    clippingThresProj:float;
1020*89c4ff92SAndroid Build Coastguard Worker    cifgEnabled:bool = true;
1021*89c4ff92SAndroid Build Coastguard Worker    peepholeEnabled:bool = false;
1022*89c4ff92SAndroid Build Coastguard Worker    projectionEnabled:bool = false;
1023*89c4ff92SAndroid Build Coastguard Worker    layerNormEnabled:bool = false;
1024*89c4ff92SAndroid Build Coastguard Worker    timeMajor:bool = false;
1025*89c4ff92SAndroid Build Coastguard Worker}
1026*89c4ff92SAndroid Build Coastguard Worker
1027*89c4ff92SAndroid Build Coastguard Workertable UnidirectionalSequenceLstmLayer {
1028*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
1029*89c4ff92SAndroid Build Coastguard Worker    descriptor:UnidirectionalSequenceLstmDescriptor;
1030*89c4ff92SAndroid Build Coastguard Worker    inputParams:LstmInputParams;
1031*89c4ff92SAndroid Build Coastguard Worker}
1032*89c4ff92SAndroid Build Coastguard Worker
1033*89c4ff92SAndroid Build Coastguard Workertable BatchMatMulDescriptor {
1034*89c4ff92SAndroid Build Coastguard Worker    transposeX:bool = false;
1035*89c4ff92SAndroid Build Coastguard Worker    transposeY:bool = false;
1036*89c4ff92SAndroid Build Coastguard Worker    adjointX:bool = false;
1037*89c4ff92SAndroid Build Coastguard Worker    adjointY:bool = false;
1038*89c4ff92SAndroid Build Coastguard Worker    dataLayoutX:DataLayout = NCHW;
1039*89c4ff92SAndroid Build Coastguard Worker    dataLayoutY:DataLayout = NCHW;
1040*89c4ff92SAndroid Build Coastguard Worker}
1041*89c4ff92SAndroid Build Coastguard Worker
1042*89c4ff92SAndroid Build Coastguard Workertable BatchMatMulLayer {
1043*89c4ff92SAndroid Build Coastguard Worker    base:LayerBase;
1044*89c4ff92SAndroid Build Coastguard Worker    descriptor:BatchMatMulDescriptor;
1045*89c4ff92SAndroid Build Coastguard Worker}
1046*89c4ff92SAndroid Build Coastguard Worker
1047*89c4ff92SAndroid Build Coastguard Workerunion Layer {
1048*89c4ff92SAndroid Build Coastguard Worker    ActivationLayer,
1049*89c4ff92SAndroid Build Coastguard Worker    AdditionLayer,
1050*89c4ff92SAndroid Build Coastguard Worker    BatchToSpaceNdLayer,
1051*89c4ff92SAndroid Build Coastguard Worker    BatchNormalizationLayer,
1052*89c4ff92SAndroid Build Coastguard Worker    ConstantLayer,
1053*89c4ff92SAndroid Build Coastguard Worker    Convolution2dLayer,
1054*89c4ff92SAndroid Build Coastguard Worker    DepthwiseConvolution2dLayer,
1055*89c4ff92SAndroid Build Coastguard Worker    FullyConnectedLayer,
1056*89c4ff92SAndroid Build Coastguard Worker    InputLayer,
1057*89c4ff92SAndroid Build Coastguard Worker    MultiplicationLayer,
1058*89c4ff92SAndroid Build Coastguard Worker    OutputLayer,
1059*89c4ff92SAndroid Build Coastguard Worker    PermuteLayer,
1060*89c4ff92SAndroid Build Coastguard Worker    Pooling2dLayer,
1061*89c4ff92SAndroid Build Coastguard Worker    ReshapeLayer,
1062*89c4ff92SAndroid Build Coastguard Worker    SoftmaxLayer,
1063*89c4ff92SAndroid Build Coastguard Worker    SpaceToBatchNdLayer,
1064*89c4ff92SAndroid Build Coastguard Worker    DivisionLayer,
1065*89c4ff92SAndroid Build Coastguard Worker    MinimumLayer,
1066*89c4ff92SAndroid Build Coastguard Worker    EqualLayer,
1067*89c4ff92SAndroid Build Coastguard Worker    MaximumLayer,
1068*89c4ff92SAndroid Build Coastguard Worker    NormalizationLayer,
1069*89c4ff92SAndroid Build Coastguard Worker    PadLayer,
1070*89c4ff92SAndroid Build Coastguard Worker    RsqrtLayer,
1071*89c4ff92SAndroid Build Coastguard Worker    FloorLayer,
1072*89c4ff92SAndroid Build Coastguard Worker    GreaterLayer,
1073*89c4ff92SAndroid Build Coastguard Worker    ResizeBilinearLayer,
1074*89c4ff92SAndroid Build Coastguard Worker    SubtractionLayer,
1075*89c4ff92SAndroid Build Coastguard Worker    StridedSliceLayer,
1076*89c4ff92SAndroid Build Coastguard Worker    GatherLayer,
1077*89c4ff92SAndroid Build Coastguard Worker    MeanLayer,
1078*89c4ff92SAndroid Build Coastguard Worker    MergerLayer,
1079*89c4ff92SAndroid Build Coastguard Worker    L2NormalizationLayer,
1080*89c4ff92SAndroid Build Coastguard Worker    SplitterLayer,
1081*89c4ff92SAndroid Build Coastguard Worker    DetectionPostProcessLayer,
1082*89c4ff92SAndroid Build Coastguard Worker    LstmLayer,
1083*89c4ff92SAndroid Build Coastguard Worker    QuantizedLstmLayer,
1084*89c4ff92SAndroid Build Coastguard Worker    QuantizeLayer,
1085*89c4ff92SAndroid Build Coastguard Worker    DequantizeLayer,
1086*89c4ff92SAndroid Build Coastguard Worker    MergeLayer,
1087*89c4ff92SAndroid Build Coastguard Worker    SwitchLayer,
1088*89c4ff92SAndroid Build Coastguard Worker    ConcatLayer,
1089*89c4ff92SAndroid Build Coastguard Worker    SpaceToDepthLayer,
1090*89c4ff92SAndroid Build Coastguard Worker    PreluLayer,
1091*89c4ff92SAndroid Build Coastguard Worker    TransposeConvolution2dLayer,
1092*89c4ff92SAndroid Build Coastguard Worker    ResizeLayer,
1093*89c4ff92SAndroid Build Coastguard Worker    StackLayer,
1094*89c4ff92SAndroid Build Coastguard Worker    AbsLayer,
1095*89c4ff92SAndroid Build Coastguard Worker    ArgMinMaxLayer,
1096*89c4ff92SAndroid Build Coastguard Worker    SliceLayer,
1097*89c4ff92SAndroid Build Coastguard Worker    DepthToSpaceLayer,
1098*89c4ff92SAndroid Build Coastguard Worker    InstanceNormalizationLayer,
1099*89c4ff92SAndroid Build Coastguard Worker    LogSoftmaxLayer,
1100*89c4ff92SAndroid Build Coastguard Worker    ComparisonLayer,
1101*89c4ff92SAndroid Build Coastguard Worker    StandInLayer,
1102*89c4ff92SAndroid Build Coastguard Worker    ElementwiseUnaryLayer,
1103*89c4ff92SAndroid Build Coastguard Worker    TransposeLayer,
1104*89c4ff92SAndroid Build Coastguard Worker    QLstmLayer,
1105*89c4ff92SAndroid Build Coastguard Worker    FillLayer,
1106*89c4ff92SAndroid Build Coastguard Worker    RankLayer,
1107*89c4ff92SAndroid Build Coastguard Worker    LogicalBinaryLayer,
1108*89c4ff92SAndroid Build Coastguard Worker    ReduceLayer,
1109*89c4ff92SAndroid Build Coastguard Worker    CastLayer,
1110*89c4ff92SAndroid Build Coastguard Worker    ShapeLayer,
1111*89c4ff92SAndroid Build Coastguard Worker    UnidirectionalSequenceLstmLayer,
1112*89c4ff92SAndroid Build Coastguard Worker    ChannelShuffleLayer,
1113*89c4ff92SAndroid Build Coastguard Worker    Convolution3dLayer,
1114*89c4ff92SAndroid Build Coastguard Worker    Pooling3dLayer,
1115*89c4ff92SAndroid Build Coastguard Worker    GatherNdLayer,
1116*89c4ff92SAndroid Build Coastguard Worker    BatchMatMulLayer,
1117*89c4ff92SAndroid Build Coastguard Worker    ElementwiseBinaryLayer,
1118*89c4ff92SAndroid Build Coastguard Worker}
1119*89c4ff92SAndroid Build Coastguard Worker
1120*89c4ff92SAndroid Build Coastguard Workertable AnyLayer {
1121*89c4ff92SAndroid Build Coastguard Worker    layer:Layer;
1122*89c4ff92SAndroid Build Coastguard Worker}
1123*89c4ff92SAndroid Build Coastguard Worker
1124*89c4ff92SAndroid Build Coastguard Workertable FeatureCompatibilityVersions {
1125*89c4ff92SAndroid Build Coastguard Worker  bindingIdsScheme:uint = 0;
1126*89c4ff92SAndroid Build Coastguard Worker  weightsLayoutScheme:uint = 0;
1127*89c4ff92SAndroid Build Coastguard Worker  constantTensorsAsInputs:uint = 0;
1128*89c4ff92SAndroid Build Coastguard Worker}
1129*89c4ff92SAndroid Build Coastguard Worker
1130*89c4ff92SAndroid Build Coastguard Worker// Root type for serialized data is the graph of the network
1131*89c4ff92SAndroid Build Coastguard Workertable SerializedGraph {
1132*89c4ff92SAndroid Build Coastguard Worker    layers:[AnyLayer];
1133*89c4ff92SAndroid Build Coastguard Worker    inputIds:[int];
1134*89c4ff92SAndroid Build Coastguard Worker    outputIds:[int];
1135*89c4ff92SAndroid Build Coastguard Worker    featureVersions:FeatureCompatibilityVersions;
1136*89c4ff92SAndroid Build Coastguard Worker}
1137*89c4ff92SAndroid Build Coastguard Worker
1138*89c4ff92SAndroid Build Coastguard Workerroot_type SerializedGraph;
1139