STT-tensorflow/tensorflow/lite/toco/model_flags.proto
Jaesung Chung f21e640f0e Enable Keras/RNN case via MLIR SavedModel import in TFLiteConverterV2
PiperOrigin-RevId: 304694033
Change-Id: I3c2586b92e1b4a810036ed390cb5b4d83352bef8
2020-04-03 14:33:45 -07:00

204 lines
8.5 KiB
Protocol Buffer

// 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.
syntax = "proto2";
package toco;
import "tensorflow/lite/toco/types.proto";
message InputArrayShape {
repeated int32 dims = 2;
}
// Next ID to USE: 7.
message InputArray {
// Name of the input arrays, i.e. the arrays from which input activations
// will be read.
optional string name = 1;
// Shape of the input. For many applications the dimensions are {batch,
// height, width, depth}. Often the batch is left "unspecified" by providing
// a value of -1.
//
// The last dimension is typically called 'depth' or 'channels'. For example,
// for an image model taking RGB images as input, this would have the value 3.
optional InputArrayShape shape = 6;
// mean_value and std_value parameters control the interpretation of raw input
// activation values (elements of the input array) as real numbers. The
// mapping is given by:
//
// real_value = (raw_input_value - mean_value) / std_value
//
// In particular, the defaults (mean_value=0, std_value=1) yield
// real_value = raw_input_value. Often, non-default values are used in image
// models. For example, an image model taking uint8 image channel values as
// its raw inputs, in [0, 255] range, may use mean_value=128, std_value=128 to
// map them into the interval [-1, 1).
//
// Note: this matches exactly the meaning of mean_value and std_value in
// (TensorFlow via LegacyFedInput).
optional float mean_value = 3;
optional float std_value = 4 [default = 1.];
// Data type of the input.
//
// In many graphs, the input arrays already have defined data types,
// e.g. Placeholder nodes in a TensorFlow GraphDef have a dtype attribute.
// In those cases, it is not needed to specify this data_type flag.
// The purpose of this flag is only to define the data type of input
// arrays whose type isn't defined in the input graph file. For example,
// when specifying an arbitrary (not Placeholder) --input_array into
// a TensorFlow GraphDef.
//
// When this data_type is quantized (e.g. QUANTIZED_UINT8), the
// corresponding quantization parameters are the mean_value, std_value
// fields.
//
// It is also important to understand the nuance between this data_type
// flag and the inference_input_type in TocoFlags. The basic difference
// is that this data_type (like all ModelFlags) describes a property
// of the input graph, while inference_input_type (like all TocoFlags)
// describes an aspect of the toco transformation process and thus of
// the output file. The types of input arrays may be different between
// the input and output files if quantization or dequantization occurred.
// Such differences can only occur for real-number data i.e. only
// between FLOAT and quantized types (e.g. QUANTIZED_UINT8).
optional IODataType data_type = 5;
}
message RnnState {
optional string state_array = 1;
optional string back_edge_source_array = 2;
optional bool discardable = 5;
// size allows to specify a 1-D shape for the RNN state array.
// Will be expanded with 1's to fit the model.
// TODO(benoitjacob): should allow a generic, explicit shape.
optional int32 size = 3;
optional int32 num_dims = 4;
}
// An ArraysExtraInfo message stores a collection of additional Information
// about arrays in a model, complementing the information in the model itself.
// It is intentionally a separate message so that it may be serialized and
// passed separately from the model. See --arrays_extra_info_file.
//
// A typical use case is to manually specify MinMax for specific arrays in a
// model that does not already contain such MinMax information.
message ArraysExtraInfo {
message Entry {
// Next ID to use: 8.
optional string name = 1;
optional string name_regexp = 7;
optional double min = 2;
optional double max = 3;
optional IODataType data_type = 4;
optional InputArrayShape shape = 5;
optional float constant_float_value = 6;
}
repeated Entry entries = 1;
}
// ModelFlags encodes properties of a model that, depending on the file
// format, may or may not be recorded in the model file. The purpose of
// representing these properties in ModelFlags is to allow passing them
// separately from the input model file, for instance as command-line
// parameters, so that we can offer a single uniform interface that can
// handle files from different input formats.
//
// For each of these properties, and each supported file format, we
// detail in comments below whether the property exists in the given file
// format.
//
// Obsolete flags that have been removed:
// optional int32 input_depth = 3;
// optional int32 input_width = 4;
// optional int32 input_height = 5;
// optional int32 batch = 6 [ default = 1];
// optional float mean_value = 7;
// optional float std_value = 8 [default = 1.];
// optional int32 input_dims = 11 [ default = 4];
// repeated int32 input_shape = 13;
//
// Next ID to USE: 24.
message ModelFlags {
// Information about the input arrays, i.e. the arrays from which input
// activations will be read.
repeated InputArray input_arrays = 1;
// Name of the output arrays, i.e. the arrays into which output activations
// will be written.
repeated string output_arrays = 2;
// If true, the model accepts an arbitrary batch size. Mutually exclusive with
// the 'batch' field: at most one of these two fields can be set.
optional bool variable_batch = 10;
repeated RnnState rnn_states = 12;
// Checks applied to the model, typically after toco's comprehensive
// graph transformations.
// Next ID to USE: 4.
message ModelCheck {
// Use the name of a type of operator to check its counts.
// Use "Total" for overall operator counts.
// Use "Arrays" for overall array counts.
optional string count_type = 1 [default = "None"];
// A count of zero is a meaningful check, so negative used to mean disable.
optional int32 count_min = 2 [default = -1];
// If count_max < count_min, then count_min is only allowed value.
optional int32 count_max = 3 [default = -1];
}
repeated ModelCheck model_checks = 14;
// If true, will allow passing inexistent arrays in --input_arrays
// and --output_arrays. This makes little sense, is only useful to
// more easily get graph visualizations.
optional bool allow_nonexistent_arrays = 16;
// If true, will allow passing non-ascii-printable characters in
// --input_arrays and --output_arrays. By default (if false), only
// ascii printable characters are allowed, i.e. character codes
// ranging from 32 to 127. This is disallowed by default so as to
// catch common copy-and-paste issues where invisible unicode
// characters are unwittingly added to these strings.
optional bool allow_nonascii_arrays = 17;
// If set, this ArraysExtraInfo allows to pass extra information about arrays
// not specified in the input model file, such as extra MinMax information.
optional ArraysExtraInfo arrays_extra_info = 18;
// When set to false, toco will not change the input ranges and the output
// ranges of concat operator to the overlap of all input ranges.
optional bool change_concat_input_ranges = 19 [default = true];
// Filepath of the saved model to be converted. This value will be non-empty
// only when the saved model import path will be used. Otherwise, the graph
// def-based conversion will be processed.
optional string saved_model_dir = 20;
// SavedModel file format version of The saved model file to be converted.
// This value will be set only when the SavedModel import path will be used.
optional int32 saved_model_version = 21;
// Set of string saved model tags, formatted in the comma-separated value.
// This value will be set only when the SavedModel import path will be used.
repeated string saved_model_tags = 22;
// Names to be exported (default: export all) when the saved model import path
// is on. This value will be set only when the SavedModel import path will be
// used.
repeated string saved_model_exported_names = 23;
}