我有一个TF模型,我需要将它转换为int8,以便在嵌入式设备中实现。我试图使用toco来转换它,但是我在确定如何正确地使用输入args实例化toco时遇到了困难:
<USER>:~/.local/bin$ python3 toco \
> --input_file=<PATH>/frozen_graph.pb \
> --output_file=<PATH>/tflite_graph.tflite \
> --input_format=TENSORFLOW_GRAPHDEF \
> --output_format=TFLITE \
> --inference_type=QUANTIZED_UINT8 \
> --output_arrays=Sidmoid \
> --input_arrays=IteratorGetNext \
> --input_shapes=1:16:16:1 \
> --mean_values=128 \
> --std_values=127
WARNING:tensorflow:From <USER>.local/lib/python3.5/site-packages/tensorflow/contrib/learn/python/learn/datasets/base.py:198: retry (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.
Instructions for updating:
Use the retry module or similar alternatives.
2018-04-27 11:40:33.699249: F tensorflow/contrib/lite/toco/model_cmdline_flags.cc:240] Check failed: mean_values.size() == model_flags->input_arrays_size()
Aborted (core dumped)我知道mean_values输入arg有一个问题,但是我不理解它的预期用途:
--mean_values="" string mean_values parameter for image models, comma-separated list of doubles, used to compute input activations from input pixel data. Each entry in the list should match an entry in --input_arrays.我也尝试过",128,128,",因为我的解释是,您不想要批处理大小/通道dims的平均值,但是文档说,它需要为列表中的每个输入输入一个与input_arrays中的元素相匹配的输入。
我也不知道该为input_arrays arg写些什么,因为我所见过的大多数代码示例都只使用input,但在我看来,您似乎需要图中节点的名称。
我想我有点误会了,但我就是搞不懂。任何帮助都将不胜感激!
发布于 2018-05-08 03:49:31
对于任何想知道的人来说,这是一些让我有点困惑的文档:它说"Input_shapes“是一串”对应于--输入_数组,冒号分隔的.“的形状。然而,各维度仍应以逗号分隔:
bazel-bin/third_party/tensorflow/contrib/lite/toco/toco \
--input_file=<my_path>/frozen_eval_graph.pb \
--output_file=<my_path>/tflite_graph.tflite \
--input_format=TENSORFLOW_GRAPHDEF \
--output_format=TFLITE \
--inference_type=QUANTIZED_UINT8 \
--output_arrays=Sigmoid \
--input_arrays=Reshape \
--input_shapes=1,16,16,1 \
--mean_values=128 \
--std_values=127 \
--variable_batch=truehttps://stackoverflow.com/questions/50092110
复制相似问题