如何将重新训练的模型转换为tflite格式?

时间:2018-07-07 07:28:24

标签: tensorflow tensorflow-lite pre-trained-model transfer-learning

我已经在MobileNet上训练了图像分类器模型,我有这些文件。 Files generated on retraining

此外,我使用toco压缩重新训练的模型以将模型转换为.lite格式,但是我需要.tflite格式。无论如何,我可以从现有文件中获取tflite格式吗?

3 个答案:

答案 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:

  1. 使用freeze_graph.py冻结检查点和图形
  2. 使用以下命令将冻结的图形转换为TensorFlow Lite FlatBuffer TOCO

您的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)