将冻结的模型“ .pb”文件转换为“ .tflite”文件所需的参数input_arrays和output_arrays是什么?

时间:2019-03-23 21:12:36

标签: tensorflow keras tensorflow-lite yolo

我需要将.pb张量流模型和.cpkt文件一起转换为tflite模型,以使其在移动设备中运行。是否有任何简单的方法来找出如何找到应该用于input_arrays和output_arrays的参数?

import tensorflow as tf

graph_def_file = "/path/to/Downloads/mobilenet_v1_1.0_224/frozen_graph.pb"
input_arrays = ["input"]
output_arrays = ["MobilenetV1/Predictions/Softmax"]

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)

1 个答案:

答案 0 :(得分:0)

根据官方文档here

  

input_arrays:用于冻结图形的输入张量列表。

     

output_arrays:用于冻结图形的输出张量列表。

意思是input_arrays是输入张量的列表(主要是占位符张量)。 output_arrays是将用作输出的Tensor对象的列表。

在您的情况下,您要提供name对象的Tensor。需要一个实际的Tensor对象。

您可以通过以下示例来理解它:

x1 = tf.placeholder( dtype=tf.float32 )
x2 = tf.placeholder( dtype=tf.float32 )
y = x1 + x2

input_arrays = [ x1 , x2 ]
output_arrays = [ y ]

您可以学习从here查找输入和输出张量。 看到您的代码,似乎您知道张量名称,因此可以引用此answer