【问题标题】:What are the parameters input_arrays and output_arrays that are needed to convert a frozen model '.pb' file to a '.tflite' file?将冻结模型“.pb”文件转换为“.tflite”文件所需的参数 input_arrays 和 output_arrays 是什么?
【发布时间】:2019-03-23 21:12:36
【问题描述】:

我需要将我的.pb tensorflow 模型连同我的.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)

【问题讨论】:

    标签: tensorflow keras tensorflow-lite yolo


    【解决方案1】:

    根据官方文档here

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

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

    意思是,input_arrays 是输入张量的列表(主要是占位符张量)。 output_arraysTensor 对象的列表,它们将作为输出。

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

    你可以通过这个例子来理解它:

    x1 = tf.placeholder( dtype=tf.float32 )
    x2 = tf.placeholder( dtype=tf.float32 )
    y = x1 + x2
    
    input_arrays = [ x1 , x2 ]
    output_arrays = [ y ]
    

    您可以从here 学习查找输入和输出张量。 看到你的代码,好像知道张量的名字,可以参考这个answer

    【讨论】:

    • 那么,你的意思是我必须提供张量本身而不是名称?非常感谢
    • 是的。提供张量而不是它们的名称。另外,如果觉得有帮助,请接受答案。
    猜你喜欢
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 2021-03-23
    相关资源
    最近更新 更多