namespace DNN; enum DataType:byte { Float32 = 0, Int8 } enum FuseCode:byte { None = 0, Relu, Relu1, Relu6 } enum LayerType:byte { Conv2D = 0, AvePool, MaxPool, Relu, Softmax, FC, Add } table Tensor { data_type:DataType; int8_data: [int8]; float32_data: [float32]; shape: [uint32]; name: string; } table Conv2D { input:string; weight:string; bias:string; pads:[uint32]; dilations:[uint32]; strides:[uint32]; group:uint32; fuse:FuseCode; output:string; } table AvePool { input:string; kernel_shape:[uint32]; pads:[uint32]; strides:[uint32]; fuse:FuseCode; output:string; } table MaxPool { input:string; kernel_shape:[uint32]; pads:[uint32]; strides:[uint32]; fuse:FuseCode; output:string; } table Relu { input:string; output:string; } table Softmax { input:string; output:string; } table FC { input:string; weight:string; bias:string; fuse:FuseCode; output:string; } table Add { input1:string; input2:string; fuse:FuseCode; output:string; } table Layer { type:LayerType; conv2d_param:Conv2D; avepool_param:AvePool; maxpool_param:MaxPool; relu_param:Relu; softmax_param:Softmax; fc_param:FC; add_param:Add; } table Model { layers:[Layer]; initializers:[Tensor]; } root_type Model;