Tensorflow Lite:关于tflite文件中的输入形状

时间:2018-05-30 02:41:39

标签: tensorflow

当我使用以下命令生成tflite文件时:

  ./bazel-bin/tensorflow/contrib/lite/toco/toco  \
  --input_file=./model1.pb \
  --input_format=TENSORFLOW_GRAPHDEF  --output_format=TFLITE \
  --output_file=./model_none.tflite --inference_type=FLOAT \
  --input_type=FLOAT --input_arrays=x \
  --output_arrays=output --input_shapes=1,none,none,1

错误: F tensorflow / contrib / lite / toco / model_cmdline_flags.cc:337]检查失败:absl :: SimpleAtoi(dim_str,& size)无法解析input_shape:1,none,none,1

问题: 精简版不支持任何形状? 为什么谷歌不支持精简版中没有形状? 有困难吗?或者只是精简版没有完成? 非常感谢您的回复。

3 个答案:

答案 0 :(得分:2)

您需要在转换时指定特定形状。在推理时间(在interpeter API中)可以调整输入的大小并且可以改变计算大小。对于固定的已知尺寸,计算效率更高。这就是必需的原因。

答案 1 :(得分:0)

我的pb文件中的输入形状是(None,None,None,3)。现在我使用命令转换为tflite文件:

./bazel-bin/tensorflow/contrib/lite/toco/toco \ --input_file=/home/hwh/pnet.pb \ --input_format=TENSORFLOW_GRAPHDEF --output_format=TFLITE \ --output_file=/home/hwh/pnet.tflite --inference_type=FLOAT \ --input_type=FLOAT --input_arrays=pnet/input \ --output_arrays=pnet/prob1 --input_shapes=1,299,299,3

tflite文件正常。但它看起来输入位图应该只有299 * 299。我希望我的模型的输入位图的大小可以调整大小,例如可以是299 * 299,150 * 150 ....现在输入位图的输入大小如果与转换为tflite的命令中的大小不同。在java demo上运行时错误如下:

E/AndroidRuntime(32697): FATAL EXCEPTION: CameraBackground
E/AndroidRuntime(32697): Process: android.example.com.tflitecamerademo, PID: 32697
E/AndroidRuntime(32697): java.lang.IllegalArgumentException: Input error: Failed to get input dimensions. 0-th input should have 1072812 bytes, but found 270000 bytes.
E/AndroidRuntime(32697):    at org.tensorflow.lite.NativeInterpreterWrapper.getInputDims(Native Method)
E/AndroidRuntime(32697):    at org.tensorflow.lite.NativeInterpreterWrapper.run(NativeInterpreterWrapper.java:109)
E/AndroidRuntime(32697):    at org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs(Interpreter.java:166)
E/AndroidRuntime(32697):    at org.tensorflow.lite.Interpreter.run(Interpreter.java:144)
E/AndroidRuntime(32697):    at com.example.android.tflitecamerademo.ImageClassifierFloatInception.runInference(ImageClassifierFloatInception.java:108)

答案 2 :(得分:0)

根据github张量流页面中的问题,动态形状在TFLite中不可用。

You can track the issue from here