无法将模型转换为tensorflow的lite格式

时间:2017-11-16 04:57:26

标签: tensorflow tensorflow-lite

我正在尝试在移动设备上使用经过培训的rnn。问题是,当我使用toco将我的.pb文件转换为.tflite时,它失败并显示以下错误消息:

WARNING: Config values are not defined in any .rc file: opt.
INFO: Found 1 target...
Target //tensorflow/contrib/lite/toco:toco up-to-date:
  bazel-bin/tensorflow/contrib/lite/toco/toco
INFO: Elapsed time: 0.287s, Critical Path: 0.00s

INFO: Running command line: bazel-bin/tensorflow/contrib/lite/toco/toco '--input_file=/Users/valentinradu/Playgrounds/char-rnn-tensorflow/remote_save/latest/graph_frz.pb' '--output_file=/Users/valentinradu/Playgrounds/char-rnn-tensorflow/remote_save/latest/graph.tflite' '--input_format=TENSORFLOW_GRAPHDEF' '--output_format=TFLITE' '--input_type=FLOAT' '--inference_type=FLOAT' '--input_shapes=1,128:1,50,50' '--input_arrays=state_in,data_in' '--output_arrays=state_out,data_out'
2017-11-16 06:48:00.156091: I tensorflow/contrib/lite/toco/import_tensorflow.cc:937] Converting unsupported operation: Fill
2017-11-16 06:48:00.156811: I tensorflow/contrib/lite/toco/import_tensorflow.cc:937] Converting unsupported operation: Fill
2017-11-16 06:48:00.156821: I tensorflow/contrib/lite/toco/import_tensorflow.cc:937] Converting unsupported operation: Pack
2017-11-16 06:48:00.156829: I tensorflow/contrib/lite/toco/import_tensorflow.cc:937] Converting unsupported operation: Pack
2017-11-16 06:48:00.156841: I tensorflow/contrib/lite/toco/import_tensorflow.cc:937] Converting unsupported operation: Unpack
2017-11-16 06:48:00.156856: I tensorflow/contrib/lite/toco/import_tensorflow.cc:937] Converting unsupported operation: StridedSlice
2017-11-16 06:48:00.156872: I tensorflow/contrib/lite/toco/import_tensorflow.cc:937] Converting unsupported operation: StridedSlice
2017-11-16 06:48:00.157260: I tensorflow/contrib/lite/toco/import_tensorflow.cc:937] Converting unsupported operation: Pack
2017-11-16 06:48:00.157277: I tensorflow/contrib/lite/toco/import_tensorflow.cc:937] Converting unsupported operation: Pack
2017-11-16 06:48:00.158053: I tensorflow/contrib/lite/toco/graph_transformations/graph_transformations.cc:39] Before general graph transformations: 40 operators, 64 arrays (0 quantized)
2017-11-16 06:48:00.158141: F tensorflow/contrib/lite/toco/graph_transformations/propagate_fixed_sizes.cc:793] Check failed: indices_shape.dimensions_count() == 1 (2 vs. 1)

现在,我知道这是因为toco希望我的模型只有一个输入,但是,在我发现的例子中,到目前为止,人们正在使用2个输入而没有问题。

是否与我在模型中使用的操作有关? 这是一个已知的限制还是一个错误?

Here是我构建模型的方式。

2 个答案:

答案 0 :(得分:1)

不幸的是,它似乎是聚集操作员的限制。我将此留在这里以防万一其他人将来遇到这个问题。

如果任何对tensorflow有更多经验的人,或者来自团队的人都可以证实这一点,那就太棒了!。

答案 1 :(得分:1)

tf.gather采用indices参数,即一维整数数组。

你得到的错误是,在你的图表中,一个Gather op有一个indices数组,它是2维的,而不是预期的1维。

更新:我不知道,但在Gather中拥有一个多维度的索引数组实际上是合法的。将其视为TFLite转换器(toco)中的“尚未实现”的错误。