Image Classification
Transformers
LiteRT
ONNX
Safetensors
English
siglip
zero-shot-image-classification
vision
cervical-cancer
diagnosis
Instructions to use KhanyiTapiwa00/medsiglip-diagnosis with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use KhanyiTapiwa00/medsiglip-diagnosis with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-classification", model="KhanyiTapiwa00/medsiglip-diagnosis") pipe("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/hub/parrots.png")# Load model directly from transformers import AutoProcessor, AutoModelForZeroShotImageClassification processor = AutoProcessor.from_pretrained("KhanyiTapiwa00/medsiglip-diagnosis") model = AutoModelForZeroShotImageClassification.from_pretrained("KhanyiTapiwa00/medsiglip-diagnosis", device_map="auto") - Notebooks
- Google Colab
- Kaggle
| // Copyright 2017 The TensorFlow Authors. All Rights Reserved. | |
| // | |
| // Licensed under the Apache License, Version 2.0 (the "License"); | |
| // you may not use this file except in compliance with the License. | |
| // You may obtain a copy of the License at | |
| // | |
| // http://www.apache.org/licenses/LICENSE-2.0 | |
| // | |
| // Unless required by applicable law or agreed to in writing, software | |
| // distributed under the License is distributed on an "AS IS" BASIS, | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| // See the License for the specific language governing permissions and | |
| // limitations under the License. | |
| // Revision History | |
| // Version 0: Initial version. | |
| // Version 1: Add subgraphs to schema. | |
| // Version 2: Rename operators to conform to NN API. | |
| // Version 3: Move buffer data from Model.Subgraph.Tensors to Model.Buffers. | |
| // Version 3a: Add new builtin op code field. Has backward compatibility with | |
| // version 3. | |
| // Version 3b: Rename fields in SignatureDef. Has backward compatibility with | |
| // version 3 and 3a. | |
| // Version 3c: Move constant tensor buffers & custom op buffers outside from | |
| // Flatbuffers. Has backward compatibility with version 3, 3a and | |
| // 3b. | |
| // Version 3d: Add ExternalBuffer tables and tensor.external_buffer field for | |
| // referencing immutable data stored in external files. | |
| namespace tflite; | |
| // This corresponds to the version. | |
| file_identifier "TFL3"; | |
| // File extension of any written files. | |
| file_extension "tflite"; | |
| // IMPORTANT: All new members of tables, enums and unions must be added at the | |
| // end to ensure backwards compatibility. | |
| // The type of data stored in a tensor. | |
| enum TensorType : byte { | |
| FLOAT32 = 0, | |
| FLOAT16 = 1, | |
| INT32 = 2, | |
| UINT8 = 3, | |
| INT64 = 4, | |
| STRING = 5, | |
| BOOL = 6, | |
| INT16 = 7, | |
| COMPLEX64 = 8, | |
| INT8 = 9, | |
| FLOAT64 = 10, | |
| COMPLEX128 = 11, | |
| UINT64 = 12, | |
| // Experimental: Resource and variant types are experimental, that are subject | |
| // to change. Do not implement custom kernels using resource & variant types | |
| // now. | |
| RESOURCE = 13, | |
| VARIANT = 14, | |
| UINT32 = 15, | |
| UINT16 = 16, | |
| INT4 = 17, | |
| BFLOAT16 = 18, | |
| INT2 = 19, | |
| UINT4 = 20, | |
| } | |
| // Custom quantization parameters for experimenting with new quantization | |
| // techniques. | |
| table CustomQuantization { | |
| custom:[ubyte] (force_align: 16); | |
| } | |
| // Represents a specific quantization technique's parameters. | |
| union QuantizationDetails { | |
| CustomQuantization, | |
| BlockwiseQuantization, | |
| } | |
| // Parameters for blockwise quantization. | |
| table BlockwiseQuantization { | |
| // index to the scale tensor, the tensor can be found in tensors array in | |
| // subgraph. | |
| scales: int; | |
| // index to the zero point tensor. If zero_points is -1, the zero point is | |
| // assumed to be 0, following the convention of optional tensors in tflite. | |
| zero_points: int; | |
| // The block size of the tensor. | |
| block_size: int; | |
| } | |
| // Parameters for converting a quantized tensor back to float. | |
| table QuantizationParameters { | |
| // These four parameters are the asymmetric linear quantization parameters. | |
| // Given a quantized value q, the corresponding float value f should be: | |
| // f = scale * (q - zero_point) | |
| // For other quantization types, the QuantizationDetails below is used. | |
| min:[float]; // For importing back into tensorflow. | |
| max:[float]; // For importing back into tensorflow. | |
| scale:[float]; // For dequantizing the tensor's values. | |
| zero_point:[long]; | |
| // If this is not none, the other quantization parameters (i.e. min, max, | |
| // scale, zero_point fields above) are ignored and the value of the | |
| // QuantizationDetails union should be used. | |
| details:QuantizationDetails; | |
| // Specifies the dimension of the Tensor's shape that the scales and | |
| // zero_points correspond to. For example, a tensor t, with dims=[4, 3, 2, 1] | |
| // with quantization params: | |
| // scale=[1.0, 2.0, 3.0], zero_point=[1, 2, 3], quantization_dimension=1 | |
| // will be quantized across the second dimension of t. | |
| // t[:, 0, :, :] will have scale[0]=1.0, zero_point[0]=1 | |
| // t[:, 1, :, :] will have scale[1]=2.0, zero_point[0]=2 | |
| // t[:, 2, :, :] will have scale[2]=3.0, zero_point[0]=3 | |
| quantized_dimension:int; | |
| } | |
| // Sparse tensors. | |
| // We use a modification of the TACO format. | |
| // Reference: http://tensor-compiler.org/kjolstad-oopsla17-tensor-compiler.pdf | |
| // | |
| // To encode a conceptual n-dimensional dense tensor with dims (d0, ..., dn-1), | |
| // potentially with a k-dimensional block (0 <= k <= n) with dims | |
| // (dn, ..., dn+k-1), the format needs to specify: | |
| // 1. In what order to traverse these dimensions. For example, to store a 2-D | |
| // matrix in row major order, the traversal order would be (d0, d1), | |
| // whereas to store it in column major order, the traversal order would be | |
| // (d1, d0). If the 2-D matrix has a 2-D inner block, the traversal order | |
| // could be (d0, d1, d2, d3). | |
| // 2. How each block dimension in (dn, ..., dn+k-1) maps to the original | |
| // tensor dimension in (d0, ..., dn-1). | |
| // 3. In the traversal order defined above, the format (dense vs. sparse) and | |
| // index metadata for each dimension. For a dense dimension, this is just | |
| // the size of that dimension. For a sparse dimension, it's the same as | |
| // the compressed index defined in the Compressed Sparse Row (CSR) format. | |
| // (http://scipy-lectures.org/advanced/scipy_sparse/csr_matrix.html) | |
| // The storage type for a dimension. Currently we support: | |
| // 1. DENSE: each coordinate in this dimension is stored implicitly. | |
| // 2. SPARSE_CSR: only the coordinates with non-zero elements are stored. The | |
| // compression technique is the same what CSR uses. | |
| // More types like a sparse dimension with a different compression technique | |
| // could be added to the list in the future. | |
| enum DimensionType : byte { | |
| DENSE = 0, | |
| SPARSE_CSR = 1, | |
| } | |
| table Int32Vector { | |
| values:[int]; | |
| } | |
| table Uint16Vector { | |
| values:[ushort] (force_align: 4); | |
| } | |
| table Uint8Vector { | |
| values:[ubyte] (force_align: 4); | |
| } | |
| // Variable-typed buffer to store the index metadata for a sparse dimension. | |
| // The widest type is Int32 instead of UInt32 because tensor's shape is a int32 | |
| // vector. We don't want the per-dimensional index to overflow that range. | |
| union SparseIndexVector { | |
| Int32Vector, | |
| Uint16Vector, | |
| Uint8Vector | |
| } | |
| table DimensionMetadata { | |
| // Whether a dimension is dense or sparse. | |
| format:DimensionType; | |
| // Index metadata used for a dimension. | |
| // - If format is DimensionType.DENSE then we use the dense_size field to | |
| // store the size of that dimension. Each index in that dimension is | |
| // stored implicitly. | |
| // - If format is DimensionType.SPARSE_CSR then we use array_segments and | |
| // array_indices to encode that dimension. array_segments represents how | |
| // to segment the indices array, each segment corresponds to one element | |
| // in the previous dimension. array_indices represents the index of the | |
| // non-zero elements within this dimension (as those in the CSR matrix | |
| // format, where the first array is row pointers and the second array is | |
| // column indices). | |
| dense_size:int; | |
| array_segments:SparseIndexVector; | |
| array_indices:SparseIndexVector; | |
| } | |
| // Parameters to encode a sparse TfLite tensor. | |
| table SparsityParameters { | |
| // The traversal order of the dimensions defined in the `shape` field of the | |
| // conceptual dense tensor. For a n-dimensional tensors with dims (d0, d1, | |
| // ..., dn-1), | |
| // - if not block sparse, the traversal_order is just a permutation of (d0, | |
| // ..., dn-1). For example, a 2-D matrix stored in row-major order would | |
| // have traversal_order = (d0, d1). | |
| // - if block sparse with a k-dimensional block (0 <= k <= n), the | |
| // traversal_order has n + k elements. The first n elements are still a | |
| // permutation of (d0, ..., dn-1). The lask k elements are a permutation | |
| // of (dn, ..., dn+k-1), defining how to traverse a block internally. For | |
| // example, a 2-D matrix with 2-D blocks, both stored in row-major order | |
| // would have traversal_order = (d0, d1, d2, d3). | |
| traversal_order:[int]; | |
| // For an n-dimensional tensor with a k-dimensional block (0 <= k <= n), | |
| // stores how a block dimension in (dn, ..., dn+k-1) maps to the original | |
| // tensor dimension in (d0, ..., dn). | |
| // It's stored in the order of (dn, ..., dn+k-1). | |
| // If not block-sparse, this field is NULL. | |
| block_map:[int]; | |
| // In the traversal order defined above, the metadata needed for | |
| // each dimension to locate the non-zero values in the original dense tensor. | |
| // The size of the dim_metadata array = the size of the traversal_order array | |
| // = n + k. | |
| dim_metadata:[DimensionMetadata]; | |
| } | |
| // The nested tensor type for VARIANT type. | |
| table VariantSubType { | |
| // The tensor shape. | |
| shape:[int]; | |
| type:TensorType; | |
| // If false, the rank or the number of tensor dimensions is unknown. | |
| // If false, "shape" must be []. | |
| has_rank: bool = false; | |
| } | |
| table Tensor { | |
| // The tensor shape. The meaning of each entry is operator-specific but | |
| // builtin ops use: [batch size, height, width, number of channels] (That's | |
| // Tensorflow's NHWC). | |
| shape:[int]; | |
| type:TensorType; | |
| // An index that refers to the buffers table at the root of the model. Or, | |
| // if there is no data buffer associated (i.e. intermediate results), then | |
| // this is 0 (which refers to an always existent empty buffer). | |
| // | |
| // The data_buffer itself is an opaque container, with the assumption that the | |
| // target device is little-endian. In addition, all builtin operators assume | |
| // the memory is ordered such that if `shape` is [4, 3, 2], then index | |
| // [i, j, k] maps to data_buffer[i*3*2 + j*2 + k]. | |
| buffer:uint; | |
| name:string; // For debugging and importing back into tensorflow. | |
| quantization:QuantizationParameters; // Optional. | |
| is_variable:bool = false; | |
| // Parameters to encode a sparse tensor. See the example in | |
| // tensorflow/lite/testdata/sparse_tensor.json. | |
| sparsity:SparsityParameters; // Optional. | |
| // Encodes `shape` with unknown dimensions. Unknown dimensions are | |
| // represented with -1. | |
| shape_signature:[int]; // Optional. | |
| // This field is added to distinguish between scalars and tensors of unknown | |
| // ranks (both of which shape is []). | |
| // For scalars (rank = 0), shape = [] and has_rank = true. | |
| // For tensors with known rank (rank > 0) and shape, shape = [...] and | |
| // has_rank = true. | |
| // For tensors with unknown rank and shape, shape = [] and has_rank = false. | |
| has_rank: bool = false; | |
| // The nested Tensor types for VARIANT type. This is always empty for | |
| // non-VARIANT types. This is optional because the nested type can be omitted. | |
| // Currently only 1 subtype is supported. The field is defined as an array for | |
| // flexibility of supporting multiple subtypes in the future. | |
| variant_tensors:[VariantSubType]; | |
| // Optional reference to an ExternalBuffer entry that stores constant tensor | |
| // data outside of the FlatBuffer. A value of 0 indicates that the tensor uses | |
| // the traditional embedded buffer field instead. | |
| external_buffer:uint; | |
| } | |
| // A list of builtin operators. Builtin operators are slightly faster than custom | |
| // ones, but not by much. Moreover, while custom operators accept an opaque | |
| // object containing configuration parameters, builtins have a predetermined | |
| // set of acceptable options. | |
| // LINT.IfChange | |
| enum BuiltinOperator : int32 { | |
| ADD = 0, | |
| AVERAGE_POOL_2D = 1, | |
| CONCATENATION = 2, | |
| CONV_2D = 3, | |
| DEPTHWISE_CONV_2D = 4, | |
| DEPTH_TO_SPACE = 5, | |
| DEQUANTIZE = 6, | |
| EMBEDDING_LOOKUP = 7, | |
| FLOOR = 8, | |
| FULLY_CONNECTED = 9, | |
| HASHTABLE_LOOKUP = 10, | |
| L2_NORMALIZATION = 11, | |
| L2_POOL_2D = 12, | |
| LOCAL_RESPONSE_NORMALIZATION = 13, | |
| LOGISTIC = 14, | |
| LSH_PROJECTION = 15, | |
| LSTM = 16, | |
| MAX_POOL_2D = 17, | |
| MUL = 18, | |
| RELU = 19, | |
| // NOTE(aselle): RELU_N1_TO_1 used to be called RELU1, but it was renamed | |
| // since different model developers use RELU1 in different ways. Never | |
| // create another op called RELU1. | |
| RELU_N1_TO_1 = 20, | |
| RELU6 = 21, | |
| RESHAPE = 22, | |
| RESIZE_BILINEAR = 23, | |
| RNN = 24, | |
| SOFTMAX = 25, | |
| SPACE_TO_DEPTH = 26, | |
| SVDF = 27, | |
| TANH = 28, | |
| CONCAT_EMBEDDINGS = 29, | |
| SKIP_GRAM = 30, | |
| CALL = 31, | |
| CUSTOM = 32, | |
| EMBEDDING_LOOKUP_SPARSE = 33, | |
| PAD = 34, | |
| UNIDIRECTIONAL_SEQUENCE_RNN = 35, | |
| GATHER = 36, | |
| BATCH_TO_SPACE_ND = 37, | |
| SPACE_TO_BATCH_ND = 38, | |
| TRANSPOSE = 39, | |
| MEAN = 40, | |
| SUB = 41, | |
| DIV = 42, | |
| SQUEEZE = 43, | |
| UNIDIRECTIONAL_SEQUENCE_LSTM = 44, | |
| STRIDED_SLICE = 45, | |
| BIDIRECTIONAL_SEQUENCE_RNN = 46, | |
| EXP = 47, | |
| TOPK_V2 = 48, | |
| SPLIT = 49, | |
| LOG_SOFTMAX = 50, | |
| // DELEGATE is a special op type for the operations which are delegated to | |
| // other backends. | |
| // WARNING: Experimental interface, subject to change | |
| DELEGATE = 51, | |
| BIDIRECTIONAL_SEQUENCE_LSTM = 52, | |
| CAST = 53, | |
| PRELU = 54, | |
| MAXIMUM = 55, | |
| ARG_MAX = 56, | |
| MINIMUM = 57, | |
| LESS = 58, | |
| NEG = 59, | |
| PADV2 = 60, | |
| GREATER = 61, | |
| GREATER_EQUAL = 62, | |
| LESS_EQUAL = 63, | |
| SELECT = 64, | |
| SLICE = 65, | |
| SIN = 66, | |
| TRANSPOSE_CONV = 67, | |
| SPARSE_TO_DENSE = 68, | |
| TILE = 69, | |
| EXPAND_DIMS = 70, | |
| EQUAL = 71, | |
| NOT_EQUAL = 72, | |
| LOG = 73, | |
| SUM = 74, | |
| SQRT = 75, | |
| RSQRT = 76, | |
| SHAPE = 77, | |
| POW = 78, | |
| ARG_MIN = 79, | |
| FAKE_QUANT = 80, | |
| REDUCE_PROD = 81, | |
| REDUCE_MAX = 82, | |
| PACK = 83, | |
| LOGICAL_OR = 84, | |
| ONE_HOT = 85, | |
| LOGICAL_AND = 86, | |
| LOGICAL_NOT = 87, | |
| UNPACK = 88, | |
| REDUCE_MIN = 89, | |
| FLOOR_DIV = 90, | |
| REDUCE_ANY = 91, | |
| SQUARE = 92, | |
| ZEROS_LIKE = 93, | |
| FILL = 94, | |
| FLOOR_MOD = 95, | |
| RANGE = 96, | |
| RESIZE_NEAREST_NEIGHBOR = 97, | |
| LEAKY_RELU = 98, | |
| SQUARED_DIFFERENCE = 99, | |
| MIRROR_PAD = 100, | |
| ABS = 101, | |
| SPLIT_V = 102, | |
| UNIQUE = 103, | |
| CEIL = 104, | |
| REVERSE_V2 = 105, | |
| ADD_N = 106, | |
| GATHER_ND = 107, | |
| COS = 108, | |
| WHERE = 109, | |
| RANK = 110, | |
| ELU = 111, | |
| REVERSE_SEQUENCE = 112, | |
| MATRIX_DIAG = 113, | |
| QUANTIZE = 114, | |
| MATRIX_SET_DIAG = 115, | |
| ROUND = 116, | |
| HARD_SWISH = 117, | |
| IF = 118, | |
| WHILE = 119, | |
| NON_MAX_SUPPRESSION_V4 = 120, | |
| NON_MAX_SUPPRESSION_V5 = 121, | |
| SCATTER_ND = 122, | |
| SELECT_V2 = 123, | |
| DENSIFY = 124, | |
| SEGMENT_SUM = 125, | |
| BATCH_MATMUL = 126, | |
| PLACEHOLDER_FOR_GREATER_OP_CODES = 127, | |
| CUMSUM = 128, | |
| CALL_ONCE = 129, | |
| BROADCAST_TO = 130, | |
| RFFT2D = 131, | |
| CONV_3D = 132, | |
| IMAG=133, | |
| REAL=134, | |
| COMPLEX_ABS=135, | |
| HASHTABLE = 136, | |
| HASHTABLE_FIND = 137, | |
| HASHTABLE_IMPORT = 138, | |
| HASHTABLE_SIZE = 139, | |
| REDUCE_ALL = 140, | |
| CONV_3D_TRANSPOSE = 141, | |
| VAR_HANDLE = 142, | |
| READ_VARIABLE = 143, | |
| ASSIGN_VARIABLE = 144, | |
| BROADCAST_ARGS = 145, | |
| RANDOM_STANDARD_NORMAL = 146, | |
| BUCKETIZE = 147, | |
| RANDOM_UNIFORM = 148, | |
| MULTINOMIAL = 149, | |
| GELU = 150, | |
| DYNAMIC_UPDATE_SLICE = 151, | |
| RELU_0_TO_1 = 152, | |
| UNSORTED_SEGMENT_PROD = 153, | |
| UNSORTED_SEGMENT_MAX = 154, | |
| UNSORTED_SEGMENT_SUM = 155, | |
| ATAN2 = 156, | |
| UNSORTED_SEGMENT_MIN = 157, | |
| SIGN = 158, | |
| BITCAST = 159, | |
| BITWISE_XOR = 160, | |
| RIGHT_SHIFT = 161, | |
| // All Operators start with STABLEHLO_ prefixes are subject to change | |
| // Many of the ops below can not be executed by TFlite runtime | |
| STABLEHLO_LOGISTIC = 162, // WARNING: Do not have runtime support | |
| STABLEHLO_ADD = 163, | |
| STABLEHLO_DIVIDE = 164, // WARNING: No runtime support yet | |
| STABLEHLO_MULTIPLY = 165, | |
| STABLEHLO_MAXIMUM = 166, | |
| STABLEHLO_RESHAPE = 167, // WARNING: No runtime support yet | |
| STABLEHLO_CLAMP = 168, // WARNING: No runtime support | |
| STABLEHLO_CONCATENATE = 169, // WARNING: No runtime support | |
| STABLEHLO_BROADCAST_IN_DIM = 170, // WARNING: No runtime support | |
| STABLEHLO_CONVOLUTION = 171, // WARNING: No runtime support | |
| STABLEHLO_SLICE = 172, // WARNING: No runtime support | |
| STABLEHLO_CUSTOM_CALL = 173, // WARNING: No runtime support | |
| STABLEHLO_REDUCE = 174, // WARNING: No runtime support | |
| STABLEHLO_ABS = 175, // WARNING: No runtime support | |
| STABLEHLO_AND = 176, // WARNING: No runtime support | |
| STABLEHLO_COSINE = 177, // WARNING: No runtime support | |
| STABLEHLO_EXPONENTIAL = 178, // WARNING: No runtime support | |
| STABLEHLO_FLOOR = 179, // WARNING: No runtime support | |
| STABLEHLO_LOG = 180, // WARNING: No runtime support | |
| STABLEHLO_MINIMUM = 181, | |
| STABLEHLO_NEGATE = 182, // WARNING: No runtime support | |
| STABLEHLO_OR = 183, // WARNING: No runtime support | |
| STABLEHLO_POWER = 184, // WARNING: No runtime support | |
| STABLEHLO_REMAINDER = 185, // WARNING: No runtime support | |
| STABLEHLO_RSQRT = 186, // WARNING: No runtime support | |
| STABLEHLO_SELECT = 187, // WARNING: No runtime support | |
| STABLEHLO_SUBTRACT = 188, // WARNING: No runtime support | |
| STABLEHLO_TANH = 189, // WARNING: No runtime support | |
| STABLEHLO_SCATTER = 190, | |
| STABLEHLO_COMPARE = 191, // WARNING: No runtime support | |
| STABLEHLO_CONVERT = 192, // WARNING: No runtime support | |
| STABLEHLO_DYNAMIC_SLICE = 193, // WARNING: No runtime support | |
| STABLEHLO_DYNAMIC_UPDATE_SLICE = 194, // WARNING: No runtime support | |
| STABLEHLO_PAD = 195, | |
| STABLEHLO_IOTA = 196, // WARNING: No runtime support | |
| STABLEHLO_DOT_GENERAL = 197, // WARNING: No runtime support | |
| STABLEHLO_REDUCE_WINDOW = 198, | |
| STABLEHLO_SORT = 199, // WARNING: No runtime support | |
| STABLEHLO_WHILE = 200, // WARNING: No runtime support | |
| STABLEHLO_GATHER = 201, | |
| STABLEHLO_TRANSPOSE = 202, // WARNING: No runtime support | |
| DILATE = 203, | |
| STABLEHLO_RNG_BIT_GENERATOR = 204, | |
| REDUCE_WINDOW = 205 (deprecated), | |
| STABLEHLO_COMPOSITE = 206, // WARNING: No runtime support | |
| STABLEHLO_SHIFT_LEFT = 207, | |
| STABLEHLO_CBRT = 208, // WARNING: No runtime support | |
| STABLEHLO_CASE = 209, | |
| } | |
| // LINT.ThenChange(internal-1) | |
| // Options for the builtin operators. | |
| union BuiltinOptions { | |
| Conv2DOptions, | |
| DepthwiseConv2DOptions, | |
| ConcatEmbeddingsOptions, | |
| LSHProjectionOptions, | |
| Pool2DOptions, | |
| SVDFOptions, | |
| RNNOptions, | |
| FullyConnectedOptions, | |
| SoftmaxOptions, | |
| ConcatenationOptions, | |
| AddOptions, | |
| L2NormOptions, | |
| LocalResponseNormalizationOptions, | |
| LSTMOptions, | |
| ResizeBilinearOptions, | |
| CallOptions, | |
| ReshapeOptions, | |
| SkipGramOptions, | |
| SpaceToDepthOptions, | |
| EmbeddingLookupSparseOptions, | |
| MulOptions, | |
| PadOptions, | |
| GatherOptions, | |
| BatchToSpaceNDOptions, | |
| SpaceToBatchNDOptions, | |
| TransposeOptions, | |
| ReducerOptions, | |
| SubOptions, | |
| DivOptions, | |
| SqueezeOptions, | |
| SequenceRNNOptions, | |
| StridedSliceOptions, | |
| ExpOptions, | |
| TopKV2Options, | |
| SplitOptions, | |
| LogSoftmaxOptions, | |
| CastOptions, | |
| DequantizeOptions, | |
| MaximumMinimumOptions, | |
| ArgMaxOptions, | |
| LessOptions, | |
| NegOptions, | |
| PadV2Options, | |
| GreaterOptions, | |
| GreaterEqualOptions, | |
| LessEqualOptions, | |
| SelectOptions, | |
| SliceOptions, | |
| TransposeConvOptions, | |
| SparseToDenseOptions, | |
| TileOptions, | |
| ExpandDimsOptions, | |
| EqualOptions, | |
| NotEqualOptions, | |
| ShapeOptions, | |
| PowOptions, | |
| ArgMinOptions, | |
| FakeQuantOptions, | |
| PackOptions, | |
| LogicalOrOptions, | |
| OneHotOptions, | |
| LogicalAndOptions, | |
| LogicalNotOptions, | |
| UnpackOptions, | |
| FloorDivOptions, | |
| SquareOptions, | |
| ZerosLikeOptions, | |
| FillOptions, | |
| BidirectionalSequenceLSTMOptions, | |
| BidirectionalSequenceRNNOptions, | |
| UnidirectionalSequenceLSTMOptions, | |
| FloorModOptions, | |
| RangeOptions, | |
| ResizeNearestNeighborOptions, | |
| LeakyReluOptions, | |
| SquaredDifferenceOptions, | |
| MirrorPadOptions, | |
| AbsOptions, | |
| SplitVOptions, | |
| UniqueOptions, | |
| ReverseV2Options, | |
| AddNOptions, | |
| GatherNdOptions, | |
| CosOptions, | |
| WhereOptions, | |
| RankOptions, | |
| ReverseSequenceOptions, | |
| MatrixDiagOptions, | |
| QuantizeOptions, | |
| MatrixSetDiagOptions, | |
| HardSwishOptions, | |
| IfOptions, | |
| WhileOptions, | |
| DepthToSpaceOptions, | |
| NonMaxSuppressionV4Options, | |
| NonMaxSuppressionV5Options, | |
| ScatterNdOptions, | |
| SelectV2Options, | |
| DensifyOptions, | |
| SegmentSumOptions, | |
| BatchMatMulOptions, | |
| CumsumOptions, | |
| CallOnceOptions, | |
| BroadcastToOptions, | |
| Rfft2dOptions, | |
| Conv3DOptions, | |
| HashtableOptions, | |
| HashtableFindOptions, | |
| HashtableImportOptions, | |
| HashtableSizeOptions, | |
| VarHandleOptions, | |
| ReadVariableOptions, | |
| AssignVariableOptions, | |
| RandomOptions, | |
| BucketizeOptions, | |
| GeluOptions, | |
| DynamicUpdateSliceOptions, | |
| UnsortedSegmentProdOptions, | |
| UnsortedSegmentMaxOptions, | |
| UnsortedSegmentMinOptions, | |
| UnsortedSegmentSumOptions, | |
| ATan2Options, | |
| SignOptions, | |
| BitcastOptions, | |
| BitwiseXorOptions, | |
| RightShiftOptions, | |
| // DO NOT add new options this union, will cause failure in Java api | |
| // generation otherwise | |
| // Add new builtin options into builtin options 2 instead | |
| } | |
| union BuiltinOptions2{ | |
| StablehloConcatenateOptions, | |
| StablehloBroadcastInDimOptions, | |
| StablehloSliceOptions, | |
| StablehloConvolutionOptions, | |
| StablehloCustomCallOptions, | |
| StablehloReduceOptions, | |
| StablehloScatterOptions, | |
| StablehloCompareOptions, | |
| StablehloDynamicSliceOptions, | |
| StablehloPadOptions, | |
| StablehloIotaOptions, | |
| StablehloDotGeneralOptions, | |
| StablehloReduceWindowOptions, | |
| StablehloSortOptions, | |
| StablehloWhileOptions, | |
| StablehloGatherOptions, | |
| StablehloTransposeOptions, | |
| DilateOptions, | |
| StablehloRngBitGeneratorOptions, | |
| ReduceWindowOptions (deprecated), | |
| StableHLOCompositeOptions, | |
| StablehloShiftLeftOptions, | |
| StablehloCaseOptions, | |
| } | |
| table StablehloGatherOptions{ | |
| offset_dims : [long]; | |
| collapsed_slice_dims : [long]; | |
| start_index_map : [long]; | |
| index_vector_dim : long; | |
| slice_sizes : [long]; | |
| indices_are_sorted : bool; | |
| } | |
| table StablehloTransposeOptions{ | |
| permutation : [long]; | |
| } | |
| enum StablehloPrecisionConfig : uint { | |
| DEFAULT, | |
| HIGH, | |
| HIGHEST, | |
| } | |
| table StablehloDotGeneralOptions{ | |
| lhs_batching_dimensions : [long]; | |
| rhs_batching_dimensions : [long]; | |
| lhs_contracting_dimensions : [long]; | |
| rhs_contracting_dimensions : [long]; | |
| precision_config : [StablehloPrecisionConfig]; | |
| } | |
| table StablehloReduceWindowOptions{ | |
| window_dimensions : [long]; | |
| window_strides : [long]; | |
| base_dilations : [long]; | |
| window_dilations : [long]; | |
| padding : [long]; | |
| body_subgraph_index : int; | |
| } | |
| table StablehloWhileOptions{ | |
| cond_subgraph_index : int; | |
| body_subgraph_index : int; | |
| } | |
| table StablehloSortOptions{ | |
| dimension : long; | |
| is_stable : bool; | |
| comparator_subgraph_index : int; | |
| } | |
| table StablehloConcatenateOptions { | |
| dimension : long; | |
| } | |
| table StablehloBroadcastInDimOptions{ | |
| broadcast_dimensions : [long]; | |
| } | |
| enum StablehloComparisonDirection : uint { | |
| STABLEHLO_COMPARISON_DIRECTION_EQ, | |
| STABLEHLO_COMPARISON_DIRECTION_NE, | |
| STABLEHLO_COMPARISON_DIRECTION_GE, | |
| STABLEHLO_COMPARISON_DIRECTION_GT, | |
| STABLEHLO_COMPARISON_DIRECTION_LE, | |
| STABLEHLO_COMPARISON_DIRECTION_LT, | |
| } | |
| enum StablehloComparisonType : uint { | |
| STABLEHLO_COMPARISON_TYPE_NOTYPE, | |
| STABLEHLO_COMPARISON_TYPE_FLOAT, | |
| STABLEHLO_COMPARISON_TYPE_FLOAT_TOTAL_ORDER, | |
| STABLEHLO_COMPARISON_TYPE_SIGNED, | |
| STABLEHLO_COMPARISON_TYPE_UNSIGNED, | |
| } | |
| table StablehloCompareOptions{ | |
| comparison_direction : StablehloComparisonDirection; | |
| compare_type : StablehloComparisonType; | |
| } | |
| table StablehloDynamicSliceOptions{ | |
| slice_sizes : [long]; | |
| } | |
| table StablehloPadOptions{ | |
| edge_padding_low : [long]; | |
| edge_padding_high : [long]; | |
| interior_padding : [long]; | |
| } | |
| table StablehloIotaOptions{ | |
| iota_dimension : long; | |
| } | |
| table StablehloCustomCallOptions { | |
| call_target_name : string; | |
| has_side_effect : bool; | |
| backend_config: string; | |
| api_version : int; // will be decprecated | |
| called_computations: [int]; // should point to subgraphs of the computations | |
| custom_attributes : [ubyte]; | |
| } | |
| table StablehloReduceOptions { | |
| dimensions : [long]; | |
| body_subgraph_index : int; | |
| } | |
| table StablehloSliceOptions{ | |
| start_indices : [long]; | |
| limit_indices : [long]; | |
| strides : [long]; | |
| } | |
| table StablehloConvolutionOptions{ | |
| window_strides : [long]; | |
| padding : [long]; | |
| lhs_dilation : [long]; | |
| rhs_dilation : [long]; | |
| window_reversal : [bool]; | |
| input_batch_dimension : long; | |
| input_feature_dimension : long; | |
| input_spatial_dimensions : [long]; | |
| kernel_input_feature_dimension : long; | |
| kernel_output_feature_dimension : long; | |
| kernel_spatial_dimensions : [long]; | |
| output_batch_dimension : long; | |
| output_feature_dimension : long; | |
| output_spatial_dimensions : [long]; | |
| feature_group_count : long; | |
| batch_group_count : long; | |
| precision_config : [StablehloPrecisionConfig]; | |
| } | |
| table StablehloScatterOptions { | |
| indices_are_sorted: bool; | |
| update_window_dims: [long]; | |
| inserted_window_dims: [long]; | |
| scatter_dims_to_operand_dims: [long]; | |
| index_vector_dim: long; | |
| unique_indices: bool; | |
| update_computation_subgraph_index: int; | |
| } | |
| table StablehloCaseOptions{ | |
| branch_subgraph_indices : [int]; | |
| } | |
| enum RngAlgorithm : byte { | |
| // An algorithm auto-selected by the system according to device type. | |
| DEFAULT = 0, | |
| // The Philox algorithm, as described in paper | |
| // ['Parallel Random Numbers: As Easy as 1, 2, 3'] | |
| // (https://www.thesalmons.org/john/random123/papers/random123sc11.pdf) | |
| PHILOX = 1, | |
| // The ThreeFry algorithm, as described in paper | |
| // ['Parallel Random Numbers: As Easy as 1, 2, 3'] | |
| // (https://www.thesalmons.org/john/random123/papers/random123sc11.pdf) | |
| THREEFRY = 2, | |
| } | |
| table StablehloRngBitGeneratorOptions { | |
| algorithm:RngAlgorithm; | |
| } | |
| // LINT.IfChange | |
| enum Padding : byte { SAME, VALID } | |
| // LINT.ThenChange(//tflite/converter/ir/tfl_op_enums.td) | |
| // LINT.IfChange | |
| enum ActivationFunctionType : byte { | |
| NONE = 0, | |
| RELU = 1, | |
| RELU_N1_TO_1 = 2, | |
| RELU6 = 3, | |
| TANH = 4, | |
| SIGN_BIT = 5, | |
| } | |
| // LINT.ThenChange(//tflite/converter/ir/tfl_op_enums.td) | |
| table Conv2DOptions { | |
| padding:Padding; | |
| stride_w:int; | |
| stride_h:int; | |
| fused_activation_function:ActivationFunctionType; | |
| dilation_w_factor:int = 1; | |
| dilation_h_factor:int = 1; | |
| // Parameters for Conv2D version 8 or above. | |
| // When set, quantized_bias_type defines the dtype for both bias and accumulator. | |
| quantized_bias_type: TensorType; | |
| } | |
| // Options for both Conv3D and Conv3DTranspose. | |
| table Conv3DOptions { | |
| padding:Padding; | |
| stride_d:int; | |
| stride_w:int; | |
| stride_h:int; | |
| fused_activation_function:ActivationFunctionType; | |
| dilation_d_factor:int = 1; | |
| dilation_w_factor:int = 1; | |
| dilation_h_factor:int = 1; | |
| } | |
| table Pool2DOptions { | |
| padding:Padding; | |
| stride_w:int; | |
| stride_h:int; | |
| filter_width:int; | |
| filter_height:int; | |
| fused_activation_function:ActivationFunctionType; | |
| } | |
| table DepthwiseConv2DOptions { | |
| // Parameters for DepthwiseConv version 1 or above. | |
| padding:Padding; | |
| stride_w:int; | |
| stride_h:int; | |
| // `depth_multiplier` is redundant. It's used by CPU kernels in | |
| // TensorFlow 2.0 or below, but ignored in versions above. | |
| // See comments in lite/c/builtin_op_data.h for more details. | |
| depth_multiplier:int; | |
| fused_activation_function:ActivationFunctionType; | |
| // Parameters for DepthwiseConv version 2 or above. | |
| dilation_w_factor:int = 1; | |
| dilation_h_factor:int = 1; | |
| } | |
| table ConcatEmbeddingsOptions { | |
| num_channels:int; | |
| num_columns_per_channel:[int]; | |
| embedding_dim_per_channel:[int]; // This could be inferred from parameters. | |
| } | |
| enum LSHProjectionType: byte { | |
| UNKNOWN = 0, | |
| SPARSE = 1, | |
| DENSE = 2, | |
| } | |
| table LSHProjectionOptions { | |
| type: LSHProjectionType; | |
| } | |
| table SVDFOptions { | |
| rank:int; | |
| fused_activation_function:ActivationFunctionType; | |
| // For weights-only quantization, use asymmetric quantization for non | |
| // constant inputs at evaluation time. | |
| asymmetric_quantize_inputs:bool; | |
| } | |
| // An implementation of TensorFlow RNNCell. | |
| table RNNOptions { | |
| fused_activation_function:ActivationFunctionType; | |
| asymmetric_quantize_inputs:bool; | |
| } | |
| // An implementation of TensorFlow dynamic_rnn with RNNCell. | |
| table SequenceRNNOptions { | |
| time_major:bool; | |
| fused_activation_function:ActivationFunctionType; | |
| asymmetric_quantize_inputs:bool; | |
| } | |
| // An implementation of TensorFlow bidrectional_dynamic_rnn with RNNCell. | |
| table BidirectionalSequenceRNNOptions { | |
| time_major:bool; | |
| fused_activation_function:ActivationFunctionType; | |
| merge_outputs: bool; | |
| asymmetric_quantize_inputs:bool; | |
| } | |
| // LINT.IfChange | |
| enum FullyConnectedOptionsWeightsFormat: byte { | |
| DEFAULT = 0, | |
| SHUFFLED4x16INT8 = 1, | |
| } | |
| // LINT.ThenChange(//tflite/converter/ir/tfl_op_enums.td) | |
| // An implementation of TensorFlow fully_connected (a.k.a Dense) layer. | |
| table FullyConnectedOptions { | |
| // Parameters for FullyConnected version 1 or above. | |
| fused_activation_function:ActivationFunctionType; | |
| // Parameters for FullyConnected version 2 or above. | |
| weights_format:FullyConnectedOptionsWeightsFormat = DEFAULT; | |
| // Parameters for FullyConnected version 5 or above. | |
| // If set to true, then the number of dimension is preserved. Furthermore, | |
| // all but the last dimension of the input and output shapes will be equal. | |
| keep_num_dims: bool; | |
| // Parameters for FullyConnected version 7 or above. | |
| // If set to true, then weights-only op will use asymmetric quantization for | |
| // inputs. | |
| asymmetric_quantize_inputs: bool; | |
| // Parameters for FullyConnected version 11 or above. | |
| // When set, quantized_bias_type defines the dtype for both bias and accumulator. | |
| quantized_bias_type: TensorType; | |
| } | |
| table SoftmaxOptions { | |
| beta: float; | |
| } | |
| // An implementation of TensorFlow concat. | |
| table ConcatenationOptions { | |
| axis:int; | |
| fused_activation_function:ActivationFunctionType; | |
| } | |
| table AddOptions { | |
| fused_activation_function:ActivationFunctionType; | |
| // Parameters supported by version 3. | |
| pot_scale_int16:bool = true; | |
| } | |
| table MulOptions { | |
| fused_activation_function:ActivationFunctionType; | |
| } | |
| table L2NormOptions { | |
| // This field is currently ignored in the L2 Norm Op. | |
| fused_activation_function:ActivationFunctionType; | |
| } | |
| table LocalResponseNormalizationOptions { | |
| radius:int; | |
| bias:float; | |
| alpha:float; | |
| beta:float; | |
| } | |
| // LINT.IfChange | |
| enum LSTMKernelType : byte { | |
| // Full LSTM kernel which supports peephole and projection. | |
| FULL = 0, | |
| // Basic LSTM kernels. Equivalent to TensorFlow BasicLSTMCell. | |
| BASIC = 1, | |
| } | |
| // LINT.ThenChange(//tflite/converter/ir/tfl_op_enums.td) | |
| // An implementation of TensorFlow LSTMCell and CoupledInputForgetGateLSTMCell | |
| table LSTMOptions { | |
| // Parameters for LSTM version 1 or above. | |
| fused_activation_function:ActivationFunctionType; | |
| cell_clip: float; // Optional, 0.0 means no clipping | |
| proj_clip: float; // Optional, 0.0 means no clipping | |
| // Parameters for LSTM version 2 or above. | |
| // Basic kernel is only supported in version 2 or above. | |
| kernel_type: LSTMKernelType = FULL; | |
| // Parameters for LSTM version 4 or above. | |
| asymmetric_quantize_inputs: bool; | |
| } | |
| // An implementation of TensorFlow dynamic_rnn with LSTMCell. | |
| table UnidirectionalSequenceLSTMOptions { | |
| fused_activation_function:ActivationFunctionType; | |
| cell_clip: float; // Optional, 0.0 means no clipping | |
| proj_clip: float; // Optional, 0.0 means no clipping | |
| // If true then first dimension is sequence, otherwise batch. | |
| time_major:bool; | |
| // Parameter for Unidirectional Sequence LSTM version 3. | |
| asymmetric_quantize_inputs:bool; | |
| // Parameter for unidirectional sequence RNN version 4. | |
| diagonal_recurrent_tensors:bool; | |
| } | |
| table BidirectionalSequenceLSTMOptions { | |
| // Parameters supported by version 1: | |
| fused_activation_function:ActivationFunctionType; | |
| cell_clip: float; // Optional, 0.0 means no clipping | |
| proj_clip: float; // Optional, 0.0 means no clipping | |
| // If true, store the outputs of both directions into the first output. | |
| merge_outputs: bool; | |
| // Parameters supported by version 2: | |
| // If true then first dimension is sequence, otherwise batch. | |
| // Version 1 implementations assumed time_major to be true, so this default | |
| // value should never change. | |
| time_major: bool = true; | |
| // Parameters for version 3 or above. | |
| asymmetric_quantize_inputs:bool; | |
| } | |
| table ResizeBilinearOptions { | |
| new_height: int (deprecated); | |
| new_width: int (deprecated); | |
| align_corners: bool; | |
| half_pixel_centers: bool; | |
| } | |
| table ResizeNearestNeighborOptions { | |
| align_corners: bool; | |
| half_pixel_centers: bool; | |
| } | |
| // A call operation options | |
| table CallOptions { | |
| // The subgraph index that needs to be called. | |
| subgraph:uint; | |
| } | |
| table PadOptions { | |
| } | |
| table PadV2Options { | |
| } | |
| table ReshapeOptions { | |
| new_shape:[int]; | |
| } | |
| table SpaceToBatchNDOptions { | |
| } | |
| table BatchToSpaceNDOptions { | |
| } | |
| table SkipGramOptions { | |
| ngram_size: int; | |
| max_skip_size: int; | |
| include_all_ngrams: bool; | |
| } | |
| table SpaceToDepthOptions { | |
| block_size: int; | |
| } | |
| table DepthToSpaceOptions { | |
| block_size: int; | |
| } | |
| table SubOptions { | |
| fused_activation_function:ActivationFunctionType; | |
| // Parameters supported by version 5 | |
| pot_scale_int16:bool = true; | |
| } | |
| table DivOptions { | |
| fused_activation_function:ActivationFunctionType; | |
| } | |
| table TopKV2Options { | |
| } | |
| enum CombinerType : byte { | |
| SUM = 0, | |
| MEAN = 1, | |
| SQRTN = 2, | |
| } | |
| table EmbeddingLookupSparseOptions { | |
| combiner:CombinerType; | |
| } | |
| table GatherOptions { | |
| axis: int; | |
| // Parameters for Gather version 5 or above. | |
| batch_dims: int = 0; | |
| } | |
| table TransposeOptions { | |
| } | |
| table ExpOptions { | |
| } | |
| table CosOptions { | |
| } | |
| table ReducerOptions { | |
| keep_dims: bool; | |
| } | |
| table SqueezeOptions { | |
| squeeze_dims:[int]; | |
| } | |
| table SplitOptions { | |
| num_splits: int; | |
| } | |
| table SplitVOptions { | |
| num_splits: int; | |
| } | |
| table StridedSliceOptions { | |
| begin_mask: int; | |
| end_mask: int; | |
| ellipsis_mask: int; | |
| new_axis_mask: int; | |
| shrink_axis_mask: int; | |
| // If true, then the end tensor is an offset of the begin tensor. | |
| offset: bool; | |
| } | |
| table LogSoftmaxOptions { | |
| } | |
| table CastOptions { | |
| in_data_type: TensorType; | |
| out_data_type: TensorType; | |
| } | |
| table DequantizeOptions { | |
| } | |
| table MaximumMinimumOptions { | |
| } | |
| table TileOptions { | |
| } | |
| table ArgMaxOptions { | |
| output_type : TensorType; | |
| } | |
| table ArgMinOptions { | |
| output_type : TensorType; | |
| } | |
| table GreaterOptions { | |
| } | |
| table GreaterEqualOptions { | |
| } | |
| table LessOptions { | |
| } | |
| table LessEqualOptions { | |
| } | |
| table NegOptions { | |
| } | |
| table SelectOptions { | |
| } | |
| table SliceOptions { | |
| } | |
| table TransposeConvOptions { | |
| // Parameters supported by version 1, 2, 3: | |
| padding:Padding; | |
| stride_w:int; | |
| stride_h:int; | |
| // Parameters supported by version 4: | |
| fused_activation_function:ActivationFunctionType = NONE; | |
| // Parameters for TransposeConv version 5 or above. | |
| // If set, use this for bias and accumulator. | |
| // When set, quantized_bias_type defines the dtype for both bias and accumulator. | |
| quantized_bias_type: TensorType; | |
| } | |
| table ExpandDimsOptions { | |
| } | |
| table SparseToDenseOptions { | |
| validate_indices:bool; | |
| } | |
| table EqualOptions { | |
| } | |
| table NotEqualOptions { | |
| } | |
| table ShapeOptions { | |
| // Optional output type of the operation (int32 or int64). Defaults to int32. | |
| out_type : TensorType; | |
| } | |
| table RankOptions { | |
| } | |
| table PowOptions { | |
| } | |
| table FakeQuantOptions { | |
| // Parameters supported by version 1: | |
| min:float; | |
| max:float; | |
| num_bits:int; | |
| // Parameters supported by version 2: | |
| narrow_range:bool; | |
| } | |
| table PackOptions { | |
| values_count:int; | |
| axis:int; | |
| } | |
| table LogicalOrOptions { | |
| } | |
| table OneHotOptions { | |
| axis:int; | |
| } | |
| table AbsOptions { | |
| } | |
| table HardSwishOptions { | |
| } | |
| table LogicalAndOptions { | |
| } | |
| table LogicalNotOptions { | |
| } | |
| table UnpackOptions { | |
| num:int; | |
| axis:int; | |
| } | |
| table FloorDivOptions { | |
| } | |
| table SquareOptions { | |
| } | |
| table ZerosLikeOptions { | |
| } | |
| table FillOptions { | |
| } | |
| table FloorModOptions { | |
| } | |
| table RangeOptions { | |
| } | |
| table LeakyReluOptions { | |
| alpha:float; | |
| } | |
| table SquaredDifferenceOptions { | |
| } | |
| // LINT.IfChange | |
| enum MirrorPadMode : byte { | |
| // Doesn't include borders. | |
| REFLECT = 0, | |
| // Includes borders. | |
| SYMMETRIC = 1, | |
| } | |
| // LINT.ThenChange(//tflite/converter/ir/tfl_op_enums.td) | |
| table MirrorPadOptions { | |
| mode:MirrorPadMode; | |
| } | |
| table UniqueOptions { | |
| idx_out_type:TensorType = INT32; | |
| } | |
| table ReverseV2Options { | |
| } | |
| table AddNOptions { | |
| } | |
| table GatherNdOptions { | |
| } | |
| table WhereOptions { | |
| } | |
| table ReverseSequenceOptions { | |
| seq_dim:int; | |
| batch_dim:int = 0; | |
| } | |
| table MatrixDiagOptions { | |
| } | |
| table QuantizeOptions { | |
| } | |
| table MatrixSetDiagOptions { | |
| } | |
| table IfOptions { | |
| then_subgraph_index:int; | |
| else_subgraph_index:int; | |
| } | |
| table CallOnceOptions { | |
| init_subgraph_index:int; | |
| } | |
| table WhileOptions { | |
| cond_subgraph_index:int; | |
| body_subgraph_index:int; | |
| } | |
| table NonMaxSuppressionV4Options { | |
| } | |
| table NonMaxSuppressionV5Options { | |
| } | |
| table ScatterNdOptions { | |
| } | |
| table SelectV2Options { | |
| } | |
| table DensifyOptions { | |
| } | |
| table SegmentSumOptions { | |
| } | |
| table BatchMatMulOptions { | |
| adj_x:bool; | |
| adj_y:bool; | |
| // Parameters for BatchMatMul version 4 or above. | |
| // If set to true, then weights-only op will use asymmetric quantization for | |
| // inputs. | |
| asymmetric_quantize_inputs: bool; | |
| } | |
| table CumsumOptions { | |
| exclusive:bool; | |
| reverse:bool; | |
| } | |
| table BroadcastToOptions { | |
| } | |
| table Rfft2dOptions { | |
| } | |
| table HashtableOptions { | |
| // The identity of hash tables. This identity will be used across different | |
| // subgraphs in the same interpreter instance. | |
| table_id:int; | |
| key_dtype:TensorType; | |
| value_dtype:TensorType; | |
| } | |
| table HashtableFindOptions { | |
| } | |
| table HashtableImportOptions { | |
| } | |
| table HashtableSizeOptions { | |
| } | |
| table VarHandleOptions { | |
| container:string; | |
| shared_name:string; | |
| } | |
| table ReadVariableOptions { | |
| } | |
| table AssignVariableOptions { | |
| } | |
| table RandomOptions { | |
| seed: long; | |
| seed2: long; | |
| } | |
| table BucketizeOptions { | |
| boundaries: [float]; // The bucket boundaries. | |
| } | |
| table GeluOptions { | |
| approximate: bool; | |
| } | |
| table DynamicUpdateSliceOptions { | |
| } | |
| table UnsortedSegmentProdOptions { | |
| } | |
| table UnsortedSegmentMaxOptions { | |
| } | |
| table UnsortedSegmentSumOptions { | |
| } | |
| table ATan2Options { | |
| } | |
| table UnsortedSegmentMinOptions{ | |
| } | |
| table SignOptions { | |
| } | |
| table BitcastOptions { | |
| } | |
| table BitwiseXorOptions { | |
| } | |
| table RightShiftOptions { | |
| } | |
| table DilateOptions { | |
| } | |
| enum ReduceWindowFunction : int { | |
| UNSUPPORTED, | |
| ADD, | |
| MUL, | |
| MINIMUM, | |
| MAXIMUM, | |
| ALL, | |
| ANY, | |
| } | |
| table ReduceWindowOptions (deprecated) { | |
| reduce_function: ReduceWindowFunction; | |
| } | |
| // An OperatorCode can be an enum value (BuiltinOperator) if the operator is a | |
| // builtin, or a string if the operator is custom. | |
| table OperatorCode { | |
| // This field is for backward compatibility. This field will be used when | |
| // the value of the extended builtin_code field has less than | |
| // BulitinOperator_PLACEHOLDER_FOR_GREATER_OP_CODES. | |
| deprecated_builtin_code:byte; | |
| custom_code:string; | |
| // The version of the operator. The version need to be bumped whenever new | |
| // parameters are introduced into an op. | |
| version:int = 1; | |
| // This field is introduced for resolving op builtin code shortage problem | |
| // (the original BuiltinOperator enum field was represented as a byte). | |
| // This field will be used when the value of the extended builtin_code field | |
| // has greater than BulitinOperator_PLACEHOLDER_FOR_GREATER_OP_CODES. | |
| builtin_code:BuiltinOperator; | |
| } | |
| enum CustomOptionsFormat : byte { | |
| FLEXBUFFERS = 0, | |
| } | |
| table StableHLOCompositeOptions { | |
| name:string; | |
| decomposition_subgraph_index:int32; | |
| composite_attributes:[ubyte]; | |
| composite_attributes_format:CustomOptionsFormat; | |
| version:int32; | |
| } | |
| table StablehloShiftLeftOptions { | |
| } | |
| // An operator takes tensors as inputs and outputs. The type of operation being | |
| // performed is determined by an index into the list of valid OperatorCodes, | |
| // while the specifics of each operations is configured using builtin_options | |
| // or custom_options. | |
| table Operator { | |
| // Index into the operator_codes array. Using an integer here avoids | |
| // complicate map lookups. | |
| opcode_index:uint; | |
| // Optional input are indicated by -1. | |
| inputs:[int]; | |
| outputs:[int]; | |
| builtin_options:BuiltinOptions; | |
| custom_options:[ubyte]; | |
| custom_options_format:CustomOptionsFormat; | |
| // A list of booleans indicating the input tensors which are being mutated by | |
| // this operator.(e.g. used by RNN and LSTM). | |
| // For example, if the "inputs" array refers to 5 tensors and the second and | |
| // fifth are mutable variables, then this list will contain | |
| // [false, true, false, false, true]. | |
| // | |
| // If the list is empty, no variable is mutated in this operator. | |
| // The list either has the same length as `inputs`, or is empty. | |
| mutating_variable_inputs:[bool]; | |
| // A list of indices to the subgraph's "tensors" that are internal to an Op. | |
| // Internal tensors are those that do not flow in or out of the operation, | |
| // but instead are part of internal computation. As such, the operation's | |
| // implementation may manage its memory more efficiently. They are needed | |
| // however (i.e. not just an implementation detail) since they are part of the | |
| // computation, which may require relevant metadata such as quantization | |
| // parameters. | |
| intermediates:[int]; | |
| // When an op is using custom_options in a model that is larger than 2GB, then | |
| // we instead use the following attributes to find the buffer location which | |
| // is stored outside of flatbuffers, the offset is calculated relative to the | |
| // beginning of the file and is only valid if > 1 | |
| large_custom_options_offset: ulong; | |
| large_custom_options_size: ulong; | |
| // Flatbuffers union struct has a 128 elements limit in JAVA, so a second | |
| // union is added, in the case of where BuitlinOptions2 runs out, a third | |
| // one can be added | |
| builtin_options_2 : BuiltinOptions2; | |
| // Index into operators_debug_metadata list. | |
| debug_metadata_index: int = -1; | |
| } | |
| // The root type, defining a subgraph, which typically represents an entire | |
| // model. | |
| table SubGraph { | |
| // A list of all tensors used in this subgraph. | |
| tensors:[Tensor]; | |
| // Indices of the tensors that are inputs into this subgraph. Note this is | |
| // the list of non-static tensors that feed into the subgraph for inference. | |
| inputs:[int]; | |
| // Indices of the tensors that are outputs out of this subgraph. Note this is | |
| // the list of output tensors that are considered the product of the | |
| // subgraph's inference. | |
| outputs:[int]; | |
| // All operators, in execution order. | |
| operators:[Operator]; | |
| // Name of this subgraph (used for debugging). | |
| name:string; | |
| // Index into subgraphs_debug_metadata list. | |
| debug_metadata_index: int = -1; | |
| } | |
| // Table of raw data buffers (used for constant tensors). Referenced by tensors | |
| // by index. The generous alignment accommodates mmap-friendly data structures. | |
| table Buffer { | |
| data:[ubyte] (force_align: 16); | |
| // In a model that is larger than 2GB, then buffers instead uses the following | |
| // attributes to find stored data, which is outside of flatbuffers | |
| // the offset is calculated relative to the beginning of the file and is only | |
| // valid if > 1. | |
| offset: ulong; | |
| size: ulong; | |
| } | |
| // Groups external buffers by file/URI. | |
| table ExternalBufferGroup { | |
| name:string; | |
| } | |
| // Describes an immutable data slice stored in an external file. | |
| table ExternalBuffer { | |
| // Unique identifier for this external buffer. | |
| id:uint; | |
| // Index into the external_buffer_groups array. | |
| group:uint; | |
| offset:ulong; | |
| length:ulong; | |
| packing:string; | |
| } | |
| table Metadata { | |
| // A human readable string to uniquely identify a Metadata. | |
| name:string; | |
| // An index to the buffers table. | |
| buffer:uint; | |
| } | |
| // Map from an alias name of tensor to tensor index in the graph. | |
| // This is used in Signature def. | |
| table TensorMap { | |
| // Represents the alias to use for this tensor. | |
| name:string; | |
| // The actual tensor index in the primary graph, that 'name' corresponds to. | |
| tensor_index:uint; | |
| } | |
| // This corresponds to SignatureDef in Tensorflow SavedModel. | |
| // The SignatureDef will be part of the SavedModel provided for conversion. | |
| table SignatureDef { | |
| // Named inputs for this signature. | |
| inputs:[TensorMap]; | |
| // Named outputs for this signature. | |
| outputs:[TensorMap]; | |
| // Key value which was in the Tensorflow SavedModel SignatureDef map. | |
| signature_key:string; | |
| // Model tag, deprecated. | |
| deprecated_tag:string (deprecated); | |
| // Index of subgraphs that corresponds to the exported method. | |
| subgraph_index:uint; | |
| } | |
| table Model { | |
| // Version of the schema. | |
| version:uint; | |
| // A list of all operator codes used in this model. This is | |
| // kept in order because operators carry an index into this | |
| // vector. | |
| operator_codes:[OperatorCode]; | |
| // All the subgraphs of the model. The 0th is assumed to be the main | |
| // model. | |
| subgraphs:[SubGraph]; | |
| // A description of the model. | |
| description:string; | |
| // Buffers of the model. | |
| // Note the 0th entry of this array must be an empty buffer (sentinel). | |
| // This is a convention so that tensors without a buffer can provide 0 as | |
| // their buffer. | |
| buffers:[Buffer]; | |
| // Metadata about the model. Indirects into the existings buffers list. | |
| // Deprecated, prefer to use metadata field. | |
| metadata_buffer:[int]; | |
| // Metadata about the model. | |
| metadata:[Metadata]; | |
| // Optional SignatureDefs for the model. | |
| signature_defs:[SignatureDef]; | |
| // Optional groups for external weight buffers. | |
| external_buffer_groups:[ExternalBufferGroup]; | |
| // Optional list of external weight buffers referenced by tensors. | |
| external_buffers:[ExternalBuffer]; | |
| } | |
| root_type Model; | |