我已经在MobileNet上训练了图像分类器模型,我有这些文件。
此外,我使用toco压缩重新训练的模型以将模型转换为.lite
格式,但是我需要.tflite
格式。无论如何,我可以从现有文件中获取tflite格式吗?
答案 0 :(得分:1)
您可以将.lite模型重命名为.tflite,它应该可以正常工作。 另外,使用toco,您可以在创建输出时重命名输出:
toco \
--input_file=tf_files/retrained_graph.pb \
--output_file=tf_files/optimized_graph.lite \ //change this to tflite
--input_format=TENSORFLOW_GRAPHDEF \
--output_format=TFLITE \
--input_shape=1,224,224,3 \
--input_array=input \
--output_array=final_result \
--inference_type=FLOAT \
--input_data_type=FLOAT
答案 1 :(得分:1)
为了将TensorFlow检查点和GraphDef转换为TensorFlow Lite FlatBuffer:
您的freeze_graph.py
命令将类似于以下内容:
freeze_graph -- \
--input_graph=output_graph.pb \
--input_binary=true \
--input_checkpoint=checkpoint \
--output_graph=frozen_graph.pb \
--output_node_names= MobilenetV1/Predictions/Softmax
您可以在模型中使用TocoConverter
(Python API)或tflite_convert
(命令行工具)。 TocoConverter
接受tf.Session,冻结图形def,SavedModel目录或Keras模型文件。 tflite_convert
接受后三种格式。
使用TOCO时,请使用扩展名output_file
指定.tflite
参数。
答案 2 :(得分:1)
这是一个简单的python脚本,可用于将.pb格式的图形转换为tflite。
import tensorflow as tf
graph_def_file = "output_graph.pb" ##Your frozen graph
input_arrays = ["input"] ##Input Node
output_arrays = ["final_result"] ##Output Node
converter = tf.lite.TFLiteConverter.from_frozen_graph(graph_def_file, input_arrays, output_arrays)
tflite_model = converter.convert()
open("converted_model.tflite","wb").write(tflite_model)