tf.lite.TFLiteConverter函數(shù)
類 TFLiteConverter
別名:
- 類 tf.contrib.lite.TFLiteConverter
- 類 tf.lite.TFLiteConverter
定義在:tensorflow/lite/python/lite.py。
使用TOCO將TensorFlow模型轉(zhuǎn)換為output_format。
這用于將TensorFlow GraphDef或SavedModel轉(zhuǎn)換為TFLite FlatBuffer或圖形可視化。
屬性:
- inference_type:輸出文件中實(shí)數(shù)數(shù)組的目標(biāo)數(shù)據(jù)類型。一定是{tf.float32, tf.uint8}。(默認(rèn)為tf.float32)
- inference_input_type:實(shí)數(shù)輸入數(shù)組的目標(biāo)數(shù)據(jù)類型。在量化的情況下允許輸入數(shù)組使用不同的類型。一定是{tf.float32, tf.uint8}。(默認(rèn)為inference_type)
- output_format:輸出文件格式。目前一定是{TFLITE, GRAPHVIZ_DOT}。(默認(rèn)為TFLITE)
- quantized_input_stats:表示輸入張量名稱的字符串的dict映射到表示訓(xùn)練數(shù)據(jù)平均值和標(biāo)準(zhǔn)偏差的浮點(diǎn)元組(例如,{“foo”:( 0.,1。)})。只需要inference_input_type是QUANTIZED_UINT8。real_input_value =(quantized_input_value - mean_value)/ std_dev_value。(默認(rèn)為{})
- default_ranges_stats:表示沒有指定范圍的所有數(shù)組的(最小,最大)范圍值的整數(shù)元組。用于通過“虛擬量化”進(jìn)行量化試驗(yàn)。(默認(rèn)為None)
- drop_control_dependency:Boolean,指示是否以靜默方式刪除控件依賴項(xiàng)。這是由于TFLite不支持控件依賴性。(默認(rèn)為True)
- reorder_across_fake_quant:Boolean,指示是否在意料之外的位置重新排序FakeQuant節(jié)點(diǎn)。當(dāng)FakeQuant節(jié)點(diǎn)的位置阻止轉(zhuǎn)換圖形所需的圖形轉(zhuǎn)換時使用。圖表中的結(jié)果與量化的訓(xùn)練圖表不同,可能導(dǎo)致不同的算術(shù)行為。(默認(rèn)為False)
- change_concat_input_ranges:Boolean,用于更改量化模型的concat運(yùn)算符的輸入和輸出的最小/最大范圍行為。如果為true,則更改concat運(yùn)算符重疊的范圍。(默認(rèn)為False)
- allow_custom_ops:Boolean,指示是否允許自定義操作。如果為False,則任何未知操作都是錯誤。如果為True,則為任何未知的操作創(chuàng)建自定義操作。開發(fā)人員需要使用自定義解析程序?qū)⑦@些提供給TensorFlow Lite運(yùn)行時。(默認(rèn)為False)
- post_training_quantize:Boolean,指示是否量化已轉(zhuǎn)換的浮點(diǎn)模型的權(quán)重。模型尺寸將減小,并且會有延遲改進(jìn)(以精度為代價)。(默認(rèn)為False)
- dump_graphviz_dir:文件夾的完整文件路徑,用于在處理GraphViz .dot文件的各個階段轉(zhuǎn)儲圖形。首選--output_format = GRAPHVIZ_DOT,以保持輸出文件的要求。(默認(rèn)為None)
- dump_graphviz_video:Boolean,指示在每次圖形轉(zhuǎn)換后是否轉(zhuǎn)儲圖形。(默認(rèn)為False)
- target_ops:實(shí)驗(yàn)標(biāo)志,可能會有變化。一組OpsSet選項(xiàng),指示要使用的轉(zhuǎn)換器。(默認(rèn)設(shè)置([OpsSet.TFLITE_BUILTINS]))
用法示例:
# Converting a GraphDef from session.
converter = lite.TFLiteConverter.from_session(sess, in_tensors, out_tensors)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)
# Converting a GraphDef from file.
converter = lite.TFLiteConverter.from_frozen_graph(
graph_def_file, input_arrays, output_arrays)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)
# Converting a SavedModel.
converter = lite.TFLiteConverter.from_saved_model(saved_model_dir)
tflite_model = converter.convert()
# Converting a tf.keras model.
converter = lite.TFLiteConverter.from_keras_model_file(keras_model)
tflite_model = converter.convert()
__init__
__init__(
graph_def,
input_tensors,
output_tensors,
input_arrays_with_shape=None,
output_arrays=None
)
TFLiteConverter的構(gòu)造函數(shù)。
參數(shù):
- graph_def:固有TensorFlow GraphDef。
- input_tensors:輸入張量列表。使用foo.get_shape()和foo.dtype計算類型和shape。
- output_tensors:輸出張量列表(僅使用.name)。
- input_arrays_with_shape:表示輸入張量名稱的字符串元組和表示輸入shape的整數(shù)列表(例如,[("foo" : [1, 16, 16, 3])])。僅在無法將圖形加載到TensorFlow中,并且input_tensors和output_tensors為None時使用。(默認(rèn)為None)
- output_arrays:用于凍結(jié)圖形的輸出張量列表。僅在無法將圖形加載到TensorFlow中,并且input_tensors和output_tensors為None時使用。(默認(rèn)為None)
可能引發(fā)的異常:
方法
convert
convert()
根據(jù)實(shí)例變量轉(zhuǎn)換TensorFlow GraphDef。
返回:
轉(zhuǎn)換后的數(shù)據(jù)采用序列化格式。TFLite Flatbuffer或Graphviz圖表,取決于output_format中的值。
可能引發(fā)的異常:
- ValueError:未指定輸入形狀。input_tensor中的維度沒有值。
from_frozen_graph
@classmethod
from_frozen_graph(
cls,
graph_def_file,
input_arrays,
output_arrays,
input_shapes=None
)
從包含凍結(jié)GraphDef的文件創(chuàng)建TFLiteConverter類。
參數(shù):
- graph_def_file:包含凍結(jié)GraphDef的文件的完整文件路徑。
- input_arrays:用于凍結(jié)圖形的輸入張量列表。
- output_arrays:用于凍結(jié)圖形的輸出張量列表。
- input_shapes:表示輸入張量名稱的字符串的Dict到表示輸入shape的整數(shù)列表(例如,{"foo" : [1, 16, 16, 3]})。輸入shape為None時自動確定(例如,{"foo" : None})。(默認(rèn)為None)
返回:
TFLiteConverter類。
可能引發(fā)的異常:
- IOError: 文件未找到。無法解析輸入文件。
- ValueError:圖表未凍結(jié)。input_arrays或output_arrays包含無效的張量名稱。必要時,未正確定義input_shapes。
from_keras_model_file
@classmethod
from_keras_model_file(
cls,
model_file,
input_arrays=None,
input_shapes=None,
output_arrays=None
)
從tf.keras模型文件創(chuàng)建TFLiteConverter類。
參數(shù):
- model_file:包含tf.keras模型的HDF5文件的完整文件路徑。
- input_arrays:用于凍結(jié)圖形的輸入張量列表。當(dāng)沒有提供時,使用來自SignatureDef的輸入數(shù)組。(默認(rèn)為None)
- input_shapes:表示輸入張量名稱的字符串的Dict到表示輸入shape的整數(shù)列表(例如,{"foo" : [1, 16, 16, 3]})。輸入shape為None時自動確定(例如,{"foo" : None})。(默認(rèn)為None)。
- output_arrays:用于凍結(jié)圖形的輸出張量列表。當(dāng)沒有提供時,使用來自SignatureDef的輸出數(shù)組。(默認(rèn)為None)
返回:
TFLiteConverter類。
from_saved_model
@classmethod
from_saved_model(
cls,
saved_model_dir,
input_arrays=None,
input_shapes=None,
output_arrays=None,
tag_set=None,
signature_key=None
)
從SavedModel創(chuàng)建TFLiteConverter類。
參數(shù):
- saved_model_dir:要轉(zhuǎn)換的SavedModel目錄。
- input_arrays:用于凍結(jié)圖形的輸入張量列表。當(dāng)沒有提供時,使用來自SignatureDef的輸入數(shù)組。(默認(rèn)為None)
- input_shapes:表示輸入張量名稱的字符串的Dict到表示輸入shape的整數(shù)列表(例如,{"foo" : [1, 16, 16, 3]})。輸入shape為None時自動確定(例如,{"foo" : None})。(默認(rèn)為None)。
- output_arrays:用于凍結(jié)圖形的輸出張量列表。當(dāng)沒有提供時,使用來自SignatureDef的輸出數(shù)組。(默認(rèn)為None)
- tag_set:標(biāo)識要在SavedModel中進(jìn)行分析的MetaGraphDef的標(biāo)記集。標(biāo)簽集中的所有標(biāo)簽都必須存在。(默認(rèn)設(shè)置("serve"))
- signature_key:標(biāo)識包含輸入和輸出的SignatureDef的關(guān)??鍵字。(默認(rèn)為DEFAULT_SERVING_SIGNATURE_DEF_KEY)
返回:
TFLiteConverter類。
from_session
@classmethod
from_session(
cls,
sess,
input_tensors,
output_tensors
)
從TensorFlow會話創(chuàng)建TFLiteConverter類。
參數(shù):
- sess:TensorFlow會話。
- input_tensors:輸入張量列表。使用foo.get_shape()和foo.dtype計算類型和shape。
- output_tensors:輸出張量列表(僅使用.name)。
返回:
TFLiteConverter類。
get_input_arrays
get_input_arrays()
返回輸入張量的名稱列表。
返回:
字符串列表。
更多建議: