1

我在 MobileNet 上重新训练了一个图像分类器模型,我有这些文件。 再培训时生成的文件

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

4

3 回答 3

2

这是一个简单的 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)
于 2020-01-30T14:10:25.347 回答
1

为了将 TensorFlow 检查点和 GraphDef 转换为 TensorFlow Lite FlatBuffer:

  1. 使用freeze_graph.py冻结检查点和图形
  2. 使用 TOCO将冻结图转换为 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、冻结图形定义、SavedModel 目录或 Keras 模型文件。tflite_convert接受后三种格式。

使用 TOCO 时,请指定output_file带有.tflite扩展名的参数。

于 2018-08-14T20:35:28.367 回答
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
于 2018-08-08T07:37:44.913 回答