Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获得TOCO tf_转换的冻结张量流模型的输入_形状_Python_Ubuntu_Tensorflow_Tensorflow Lite - Fatal编程技术网

Python 如何获得TOCO tf_转换的冻结张量流模型的输入_形状

Python 如何获得TOCO tf_转换的冻结张量流模型的输入_形状,python,ubuntu,tensorflow,tensorflow-lite,Python,Ubuntu,Tensorflow,Tensorflow Lite,我正在尝试使用将从中获得的冻结模型转换为Ubuntu 18.04.1 LTS(VirtualBox)上的.tflite。 当我尝试运行该命令时: /home/nils/.local/bin/tflite_convert --output_file=/home/nils/Documents/frozen.tflite --graph_def_file=/home/nils/Documents/20180402-114759/20180402-114759.pb --input_arrays=

我正在尝试使用将从中获得的冻结模型转换为Ubuntu 18.04.1 LTS(VirtualBox)上的.tflite。 当我尝试运行该命令时:

/home/nils/.local/bin/tflite_convert 
--output_file=/home/nils/Documents/frozen.tflite 
--graph_def_file=/home/nils/Documents/20180402-114759/20180402-114759.pb 
--input_arrays=input --output_array=embeddings
我得到以下错误:

2018-11-29 16:36:21.774098: I 
tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports 
instructions that this TensorFlow binary was not compiled to use: AVX2
Traceback (most recent call last):
File "/home/nils/.local/bin/tflite_convert", line 11, in <module>
 sys.exit(main())
File 
"/home/nils/.local/lib/python3.6/site-packages/tensorflow/contrib   /lite/python/tflite_convert.py", 
line 412, in main
 app.run(main=run_main, argv=sys.argv[:1])
   File 
"/home/nils/.local/lib/python3.6/site-packages/tensorflow/python/platform/app.py", 
line 125, in run
 _sys.exit(main(argv))
File 
"/home/nils/.local/lib/python3.6/site-packages/tensorflow/contrib/lite/python/tflite_convert.py", 
line 408, in run_main
 _convert_model(tflite_flags)
File 
"/home/nils/.local/lib/python3.6/site-packages/tensorflow/contrib/lite/python/tflite_convert.py", 
line 162, in _convert_model
 output_data = converter.convert()
File 
"/home/nils/.local/lib/python3.6/site-packages/tensorflow/contrib/lite/python/lite.py", 
line 404, in convert
 "'{0}'.".format(_tensor_name(tensor)))
ValueError: Provide an input shape for input array 'input'.

如果您再次启动Tensorboard,回到您看到的图形,应该有一个搜索图标(我想在左上角),您可以在其中键入“input”并找到输入张量。它会给你想要的形状。我猜它的形式是“[1,图像大小,图像大小,3]”

或者,您可以检查代码

feed_dict = { images_placeholder:images, phase_train_placeholder:False }
请注意,我们正在将“images”对象输入images\u占位符,该占位符映射到“input:0”张量。然后基本上需要图像对象的形状


图像来自对facenet.load_data()的调用。如果您进入facenet.py并检查load_data函数,您可以观察到形状与我上面建议的类似。如果您打印图像大小值,它应该与您在Tensorboard中看到的匹配。

谢谢您的帮助,我按照Alan Chiao所说的做了,然后将load_data()加载到facenet.py,在那里我最终找到了形状[1160,160,3]。此外,还向我展示了我必须注意的事项:

--输入图形。类型:逗号分隔列表的冒号分隔列表 整数的数目。每个以逗号分隔的整数列表给出 TensorFlow约定中指定的输入数组之一

示例:--input_shapes=1,60,80,3对于典型的视觉模型,表示批量大小为1,输入图像高度为60,输入图像宽度为80,输入图像深度为3(表示RGB通道)


我浏览了tflite转换器的代码。我发现您需要以
{“input\u tensor\u name:[input shape]}
的格式将输入形状作为字典提供

下面是一个解决此问题的示例:

`graph_def_file = "20180402-114759/20180402-114759.pb"
input_arrays = ["input"]
output_arrays = ["embeddings"]

converter = tf.lite.TFLiteConverter.from_frozen_graph(
  graph_def_file, input_arrays, output_arrays,input_shapes={"input":[1,160,160,3]})

tflite_model = converter.convert()
open("model.tflite", "wb").write(tflite_model)
`

对于遇到相同问题的其他人,Nils似乎在该问题中找到了答案:。所需的输入_形状为[1,160,160,3]
`graph_def_file = "20180402-114759/20180402-114759.pb"
input_arrays = ["input"]
output_arrays = ["embeddings"]

converter = tf.lite.TFLiteConverter.from_frozen_graph(
  graph_def_file, input_arrays, output_arrays,input_shapes={"input":[1,160,160,3]})

tflite_model = converter.convert()
open("model.tflite", "wb").write(tflite_model)
`