7 // - Our initial version
10 // - Backward compatible with Initial version
11 // - Added Graph to represent sub graphs
12 // - Added name, version(default as 1), graph in ModelRecipe
15 // This enum value corresponds to TensorType in TensorFlow Lite schema
33 enum SparseIndexVecType {
34 SparseIdxVecType_NONE = 0;
41 repeated uint32 dim = 3;
44 message ShapeSignature {
45 repeated int32 dim = 1;
48 message TensorFiller {
49 optional string tag = 1;
50 repeated string arg = 2;
53 message TensorQuantization {
54 repeated float min = 1;
55 repeated float max = 2;
56 repeated float scale = 3;
57 repeated int64 zero_point = 4;
58 optional int32 quantized_dimension = 5 [default = 0];
61 message TensorSparsity {
62 message TraversalOrder {
63 repeated int32 dim = 1;
66 repeated int32 dim = 1;
69 repeated int32 dim = 1;
70 optional SparseIndexVecType type = 2;
73 optional DimensionType format = 1;
74 optional int32 dense_size = 2;
75 optional IndexVec array_segments = 3;
76 optional IndexVec array_indices = 4;
79 optional TraversalOrder traversal_order = 1;
80 optional BlockMap block_map = 2;
81 repeated DimMetaData dim_metadata = 3;
85 optional string name = 1;
86 optional TensorType type = 2;
87 optional TensorShape shape = 3;
88 optional TensorFiller filler = 4;
89 optional TensorQuantization quant = 5;
90 optional TensorSparsity sparsity = 6;
91 optional bool is_variable = 7 [default = false];
92 optional ShapeSignature shape_signature = 8;
93 // 'make_sparse' is to tell tflchef to make a sparse tensor
94 // as filling 'TensorSparsity' by hand can be difficult
95 // for now, last dimension will be SPARSE_CSR
96 // ex) shape [2, 3, 4] will have
97 // TraversalOrder [0, 1, 2] with [DENSE, DENSE, SPARSE_CSR]
98 optional bool make_sparse = 9 [default = false];
101 // This enum value corresponds to Padding in TensorFlow Lite schema
107 // This enum value corresponds to ActivationFunctionType in TensorFlow Lite schema
117 // This enum value corresponds to MirrorPadMode in TensorFlow Lite schema
123 message BidirectionalSequenceLSTMOptions {
124 optional Activation activation = 1 [default = NONE];
125 optional float cell_clip = 2 [default = 0.0];
126 optional float proj_clip = 3 [default = 0.0];
127 optional bool merge_outputs = 6 [default = false];
128 optional bool time_major = 4 [default = true];
129 optional bool asymmetric_quantize_inputs = 5 [default = false];
132 message Conv2DOptions
134 optional Padding padding = 1 [default = VALID];
135 optional int32 stride_w = 2 [default = 1];
136 optional int32 stride_h = 3 [default = 1];
137 optional Activation activation = 4 [default = NONE];
138 optional int32 dilation_w_factor = 5 [default = 1];
139 optional int32 dilation_h_factor = 6 [default = 1];
142 message Pool2DOptions {
143 optional Padding padding = 1 [default = VALID];
144 optional int32 stride_w = 2 [default = 1];
145 optional int32 stride_h = 3 [default = 1];
146 optional int32 filter_width = 4 [default = 1];
147 optional int32 filter_height = 5 [ default = 1];
148 optional Activation activation = 6 [default = NONE];
151 message ConcatenationOptions {
152 optional int32 axis = 1 [default = 0];
153 optional Activation activation = 2 [default = NONE];
156 message ReshapeOptions {
157 repeated int32 new_shape = 1;
160 message DepthwiseConv2DOptions
162 optional Padding padding = 1 [default = VALID];
163 optional int32 stride_w = 2 [default = 1];
164 optional int32 stride_h = 3 [default = 1];
165 optional int32 depth_multiplier = 4 [default = 1];
166 optional Activation activation = 5 [default = NONE];
167 optional int32 dilation_w_factor = 6 [default = 1];
168 optional int32 dilation_h_factor = 7 [default = 1];
171 message ScatterNdOptions {
176 optional Activation activation = 1 [default = NONE];
180 optional Activation activation = 1 [default = NONE];
183 message FloorDivOptions {
187 message FloorModOptions {
191 message FullyConnectedOptions {
192 optional Activation activation = 1 [default = NONE];
193 optional bool keep_num_dims = 2 [ default = false ];
197 optional Activation activation = 1 [default = NONE];
200 message AddNOptions {
204 message ArgMaxOptions {
205 optional TensorType output_type = 1 [default = INT64];
208 message ArgMinOptions {
209 optional TensorType output_type = 1 [default = INT64];
212 message PackOptions {
213 optional int32 values_count = 1;
214 optional int32 axis = 2 [default = 0];
221 message PadV2Options {
225 message MirrorPadOptions {
226 optional MirrorPadMode mode = 1 [default = REFLECT];
229 message SoftmaxOptions {
230 optional float beta = 1 [default = 0.0];
234 optional Activation activation = 1 [default = NONE];
241 message RangeOptions {
245 message ReducerOptions {
246 optional bool keep_dims = 1 [ default = false ];
249 message SpaceToDepthOptions {
250 optional int32 block_size = 1;
253 message LogicalOrOptions {
257 message LogicalNotOptions {
261 message LogicalAndOptions {
265 message TransposeOptions {
277 message EqualOptions {
281 message ShapeOptions {
282 optional TensorType out_type = 1 [default = INT32];
285 message BatchToSpaceNDOptions {
289 message SpaceToBatchNDOptions {
293 message StridedSliceOptions {
294 optional int32 begin_mask = 1;
295 optional int32 end_mask = 2;
296 optional int32 ellipsis_mask = 3;
297 optional int32 new_axis_mask = 4;
298 optional int32 shrink_axis_mask = 5;
301 message SliceOptions {
309 message ExpandDimsOptions {
313 message UnpackOptions {
314 optional int32 num = 1;
315 optional int32 axis = 2 [default = 0];
318 message GatherOptions {
319 optional int32 axis = 1 [default = 0];
322 message TileOptions {
326 message BatchMatMulOptions {
327 optional bool adj_x = 1 [default = false];
328 optional bool adj_y = 2 [default = false];
332 optional int32 then_subgraph_index = 1;
333 optional int32 else_subgraph_index = 2;
336 message WhileOptions {
337 optional int32 cond_subgraph_index = 1;
338 optional int32 body_subgraph_index = 2;
341 message CastOptions {
342 optional TensorType in_data_type = 1 [default = FLOAT32];
343 optional TensorType out_data_type = 2 [default = FLOAT32];
346 message SquareOptions {
350 message MaximumMinimumOptions {
354 message GreaterEqualOptions {
358 message SelectOptions {
362 message SelectV2Options {
366 message SplitOptions {
367 optional int32 num_splits = 1;
370 message SplitVOptions {
371 optional int32 num_splits = 1;
374 message SquaredDifferenceOptions {
378 message SVDFOptions {
379 optional int32 rank = 1 [default = 0];
380 optional Activation activation = 2 [default = NONE];
381 optional bool asymmetric_quantize_inputs = 3 [default = false];
384 message FillOptions {
388 message GreaterOptions {
392 message L2NormOptions {
393 optional Activation activation = 1 [default = NONE];
396 message LessOptions {
400 message LessEqualOptions {
404 message LocalResponseNormalizationOptions {
405 optional int32 radius = 1 [default = 5];
406 optional float bias = 2 [default = 1.0];
407 optional float alpha = 3 [default = 1.0];
408 optional float beta = 4 [default = 0.5];
411 message MatMulOptions {
412 optional bool transpose_a = 1 [default = false];
413 optional bool transpose_b = 2 [default = false];
416 message SqueezeOptions {
417 repeated int32 squeeze_dim = 1;
420 message OneHotOptions {
421 optional int32 axis = 1 [default = -1];
424 message TopKV2Options {
428 message LogSoftmaxOptions {
432 message ZerosLikeOptions {
436 message GatherNdOptions {
440 message GeluOptions {
441 optional bool approximate = 1 [default = false];
444 message NonMaxSuppressionV4Options {
448 message NonMaxSuppressionV5Options {
452 message NotEqualOptions {
460 message LeakyReluOptions {
461 optional float alpha = 1 [default = 0.2];
464 message ResizeNearestNeighborOptions {
465 optional bool align_corners = 1 [default = false];
468 message ResizeBilinearOptions {
469 optional bool align_corners = 1 [default = false];
470 optional bool half_pixel_centers = 2 [default = false];
473 message DepthToSpaceOptions {
474 optional int32 block_size = 1;
477 message TransposeConvOptions {
478 optional Padding padding = 1 [default = VALID];
479 optional int32 stride_w = 2 [default = 1];
480 optional int32 stride_h = 3 [default = 1];
481 optional Activation activation = 4 [default = NONE];
484 message ReverseSequenceOptions {
485 optional int32 seq_dim = 1 [default = 0];
486 optional int32 batch_dim = 2 [default = 0];
489 message RankOptions {
493 message SegmentSumOptions {
497 message UnidirectionalSequenceLSTMOptions {
498 optional Activation activation = 1 [default = NONE];
499 optional float cell_clip = 2 [default = 0.0];
500 optional float proj_clip = 3 [default = 0.0];
501 optional bool time_major = 4 [default = false];
502 optional bool asymmetric_quantize_inputs = 5 [default = false];
505 message UniqueOptions {
506 optional TensorType idx_out_type = 1 [default = INT32];
509 message WhereOptions {
513 message SparseToDenseOptions {
514 optional bool validate_indices = 1 [default = true];
517 message ReverseV2Options {
521 message MatrixDiagOptions {
525 message MatrixSetDiagOptions {
529 message DequantizeOptions {
533 message MaxPoolWithArgmaxOptions {
534 optional Padding padding = 1 [default = VALID];
535 optional int32 stride_w = 2 [default = 1];
536 optional int32 stride_h = 3 [default = 1];
537 optional int32 filter_width = 4 [default = 1];
538 optional int32 filter_height = 5 [ default = 1];
539 optional TensorType output_type = 6 [default = INT64];
540 optional bool include_batch_in_index = 7 [default = false];
543 message FakeQuantOptions {
544 optional float min = 1 [default = 0.0];
545 optional float max = 2 [default = 0.0];
546 optional int32 num_bits = 3 [default = 0];
547 optional bool narrow_range = 4 [default = false];
550 message DensifyOptions {
555 optional string type = 1;
556 repeated string input = 2;
557 repeated string output = 3;
558 optional int32 version = 4 [default = 1];
560 optional Conv2DOptions conv2d_options = 100;
561 optional Pool2DOptions averagepool2d_options = 101;
562 optional ConcatenationOptions concatenation_options = 102;
563 optional Pool2DOptions maxpool2d_options = 103;
564 optional ReshapeOptions reshape_options = 104;
565 optional DepthwiseConv2DOptions depthwiseconv2d_options = 105;
566 optional SubOptions sub_options = 106;
567 optional DivOptions div_options = 107;
568 optional FullyConnectedOptions fullyconnected_options = 108;
569 optional AddOptions add_options = 109;
570 optional ArgMaxOptions argmax_options = 110;
571 optional PadOptions pad_options = 111;
572 optional SoftmaxOptions softmax_options = 112;
573 optional MulOptions mul_options = 113;
574 optional ReducerOptions mean_options = 114;
575 optional TransposeOptions transpose_options = 115;
576 optional PackOptions pack_options = 116;
577 optional LogicalOrOptions logical_or_options = 117;
578 optional LogicalNotOptions logical_not_options = 118;
579 optional LogicalAndOptions logical_and_options = 119;
580 optional AbsOptions abs_options = 120;
581 optional CosOptions cos_options = 121;
582 optional EqualOptions equal_options = 122;
583 optional ShapeOptions shape_options = 123;
584 optional FloorDivOptions floordiv_options = 124;
585 optional BatchToSpaceNDOptions batch_to_space_options = 125;
586 optional ExpOptions exp_options = 126;
587 optional UnpackOptions unpack_options = 127;
588 optional GatherOptions gather_options = 128;
589 optional BatchMatMulOptions batch_matmul_options = 129;
590 optional TileOptions tile_options = 130;
591 optional IfOptions if_options = 131;
592 optional WhileOptions while_options = 132;
593 optional SpaceToBatchNDOptions space_to_batch_nd_options = 133;
594 optional CastOptions cast_options = 134;
595 optional GreaterEqualOptions greaterequal_options = 135;
596 optional MaximumMinimumOptions maximum_options = 136;
597 optional StridedSliceOptions strided_slice_options = 137;
598 optional SquaredDifferenceOptions squared_difference_options = 138;
599 optional FillOptions fill_options = 139;
600 optional SelectOptions select_options = 140;
601 optional ReducerOptions reduce_prod_options = 141;
602 optional SplitOptions split_options = 142;
603 optional SplitVOptions split_v_options = 143;
604 optional ReducerOptions sum_options = 144;
605 optional GreaterOptions greater_options = 145;
606 optional SqueezeOptions squeeze_options = 146;
607 optional FloorModOptions floormod_options = 147;
608 optional OneHotOptions onehot_options = 148;
609 optional LessOptions less_options = 149;
610 optional ReducerOptions reduce_max_options = 150;
611 optional MaximumMinimumOptions minimum_options = 151;
612 optional ReducerOptions reduce_any_options = 152;
613 optional ZerosLikeOptions zeros_like_options = 153;
614 // ConcatEmbeddingsOptions 154
615 // LSHProjectionOptions 155
616 optional SVDFOptions svdf_options = 156;
618 optional L2NormOptions l2norm_options = 158;
619 optional LocalResponseNormalizationOptions local_response_normalization_options = 159;
621 optional ResizeBilinearOptions resize_bilinear_options = 161;
623 // SkipGramOptions 163
624 optional SpaceToDepthOptions space_to_depth_options = 164;
625 // EmbeddingLookupSparseOptions 165
626 // SequenceRNNOptions 166
627 optional TopKV2Options topk_v2_options = 167;
628 optional LogSoftmaxOptions log_softmax_options = 168;
629 optional DequantizeOptions dequantize_options = 169;
630 optional NegOptions neg_options = 170;
631 optional PadV2Options padv2_options = 171;
632 optional LessEqualOptions lessequal_options = 172;
633 optional SliceOptions slice_options = 173;
634 optional TransposeConvOptions transpose_conv_options = 174;
635 optional SparseToDenseOptions sparse_to_dense_options = 175;
636 optional PowOptions pow_options = 176;
637 optional ArgMinOptions argmin_options = 177;
638 optional FakeQuantOptions fakequant_options = 178;
639 optional BidirectionalSequenceLSTMOptions bidirectional_sequence_lstm_options = 179;
640 // BidirectionalSequenceRNNOptions 180
641 optional UnidirectionalSequenceLSTMOptions unidirectional_sequence_lstm_options = 181;
642 optional RangeOptions range_options = 182;
643 optional ResizeNearestNeighborOptions resize_nearest_neighbor_options = 183;
644 optional LeakyReluOptions leaky_relu_options = 184;
645 optional MirrorPadOptions mirrorpad_options = 185;
646 optional UniqueOptions unique_options = 186;
647 optional ReverseV2Options reversev2_options = 187;
649 optional GatherNdOptions gather_nd_options = 189;
650 optional WhereOptions where_options = 190;
651 optional RankOptions rank_options = 191;
652 optional ReverseSequenceOptions reverse_sequence_options = 192;
653 optional MatrixDiagOptions matrix_diag_options = 193;
654 // QuantizeOptions 194
655 optional MatrixSetDiagOptions matrix_set_diag_options = 195;
656 // HardSwishOptions 196
657 optional DepthToSpaceOptions depth_to_space_options = 197;
658 optional NonMaxSuppressionV4Options non_max_suppression_v4_options = 198;
659 optional NonMaxSuppressionV5Options non_max_suppression_v5_options = 199;
660 optional ScatterNdOptions scatter_nd_options = 200;
661 optional NotEqualOptions notequal_options = 201;
662 optional ExpandDimsOptions expand_dims_options = 202;
663 optional Pool2DOptions l2pool2d_options = 203;
664 optional ReducerOptions all_options = 204;
665 optional ReducerOptions reduce_min_options = 205;
666 optional SegmentSumOptions segment_sum_options = 206;
667 optional AddNOptions add_n_options = 207;
668 optional MatMulOptions matmul_options = 208;
669 optional MaxPoolWithArgmaxOptions max_pool_with_argmax_options = 209;
670 optional DensifyOptions densify_options = 210;
671 optional GeluOptions gelu_options = 211;
672 // NOTE if there are more than two options with same type of Options
673 // use the number not listed in the above reserve list
677 optional string name = 4;
678 // use tensor as name of the Operand or use tensor_index as order number.
679 // either one should exist.
680 optional string tensor = 5;
681 optional uint32 tensor_index = 6;
684 message SignatureDef {
685 repeated TensorMap inputs = 4;
686 repeated TensorMap outputs = 5;
687 optional string signature_key = 6;
688 // optional string key = 10; obsolete in TF2.8.0
689 optional uint32 subgraph_index = 12;
692 // For additional subgraphs
694 repeated Operand operand = 1;
695 repeated Operation operation = 2;
696 repeated string input = 3;
697 repeated string output = 4;
698 optional string name = 5;
701 message ModelRecipe {
702 repeated Operand operand = 1;
703 repeated Operation operation = 2;
704 repeated string input = 3;
705 repeated string output = 4;
706 optional string name = 5;
707 optional uint32 version = 6 [default = 1];
708 repeated Graph graph = 7;
709 repeated SignatureDef signature_def = 8;