从pb到tflite之二

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/SPESEG/article/details/100995272

上一篇博文尝试了很多转tflite的方法:1-bazel build 据说这种要下载TensorFlow源码,而非已经通过pip安装的库;2-tflite_convert/toco这俩是一样的,都是命令,可以在终端直接用,不过目前这种方法出现的错误不知道是啥原因,百思不得其解 ;3-其他通过代码直接转的方法,比如tf.contrib.lite.TocoConverter.from_frozen_graph,这种方法得到的tflite不到1k,这是在逗我?

关于第二种的错误常见的难以解决的如下:吓死个人,怀疑人生了都。就问你服不服???

2019-09-18 20:06:40.270044: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: TensorArrayV3\n2019-09-18 20:06:40.270134: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1127] Op node missing output type attribute: rnn/TensorArray\n2019-09-18 20:06:40.270150: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: TensorArrayV3\n2019-09-18 20:06:40.270163: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1127] Op node missing output type attribute: rnn/TensorArray_1\n2019-09-18 20:06:40.270199: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: TensorArrayScatterV3\n2019-09-18 20:06:40.270217: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1127] Op node missing output type attribute: rnn/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3\n2019-09-18 20:06:40.270238: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.270255: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.270269: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.270283: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.270296: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.270309: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.270332: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.270347: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.270364: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: LoopCond\n2019-09-18 20:06:40.270376: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1127] Op node missing output type attribute: rnn/while/LoopCond\n2019-09-18 20:06:40.270411: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.270425: I tensorflow/contrib/lite/toco/import_tensorflow.cc:189] Unsupported data type in placeholder op: 20\n2019-09-18 20:06:40.270436: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.270448: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: TensorArrayReadV3\n2019-09-18 20:06:40.270887: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.270911: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.270942: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.270960: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.271271: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.271293: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.271324: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.271342: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.271651: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.271673: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.271701: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.271719: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.271744: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Enter\n2019-09-18 20:06:40.271757: I tensorflow/contrib/lite/toco/import_tensorflow.cc:189] Unsupported data type in placeholder op: 20\n2019-09-18 20:06:40.271769: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: TensorArrayWriteV3\n2019-09-18 20:06:40.271784: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1127] Op node missing output type attribute: rnn/while/TensorArrayWrite/TensorArrayWriteV3\n2019-09-18 20:06:40.271806: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: Exit\n2019-09-18 20:06:40.271825: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: TensorArraySizeV3\n2019-09-18 20:06:40.271839: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1127] Op node missing output type attribute: rnn/TensorArrayStack/TensorArraySizeV3\n2019-09-18 20:06:40.271860: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1080] Converting unsupported operation: TensorArrayGatherV3\n2019-09-18 20:06:40.272175: F tensorflow/contrib/lite/toco/tooling_util.cc:1382] Check failed: batch == 1 (2 vs. 1)\nAborted\n

啥Op都不支持还玩个屁啊!!寡人也不测试这个pb能不能用了。先看第一个方法的,bazel

我直接下载了TensorFlow源码,然后传到服务器,用bazel,也是醉了,为啥没有这个文件了,分明有toco.cc这个文件啊,我这是TensorFlow的源码文件夹下啊。

tensorflow-master$ bazel-bin/tensorflow/lite/toco/toco \
--graph_def_file=../my_freeze12xshell.pb --output_file=../my12.tflite \
--output_format=TFLITE --input_shape=2,4,513 --input_array=x_mixed \
--output_array=y_out1,y_out2 --inference_type=QUANTIZED_UINT8 \
--inference_input_type=QUANTIZED_UINT8 --std_dev_values=1 --mean_values=0

-bash: bazel-bin/tensorflow/lite/toco/toco: No such file or directory

后来发现少了一步bazel build,但这一步出错了,可能是网络原因,我去。

WARNING: Download from https://storage.googleapis.com/mirror.tensorflow.org/github.com/bazelbuild/bazel-toolchains/archive/92dd8a7a518a2fb7ba992d47c8b38299fe0be825.tar.gz 
failed: class com.google.devtools.build.lib.bazel.repository.downloader.UnrecoverableHttpException GET returned 404 Not Found
ERROR: An error occurred during the fetch of repository 'bazel_toolchains':
   java.io.IOException: writing file failed
ERROR: no such package '@bazel_toolchains//repositories': java.io.IOException: writing file failed
ERROR: no such package '@bazel_toolchains//repositories': java.io.IOException: writing file failed

啥意思啊?卧槽。

一种原因是应该是内存不足了,No Space Left On Device,我确定看到了这句话,另外我发现有说tf1.12.0的版本问题比较多,因此我升级了tf-gpu到1.13.2,这样也更接近现在的github上tf的源码编译。所以要重新训练数据??或试试toco/tflite_convert

同样是相同的代码,为啥今天就出错了啊?我找谁说理去啊??

tensorflow-master$ bazel build tensorflow/lite/toco:toco

Starting local Bazel server and connecting to it...

FATAL: Cannot get start time of process 0: (error: 2): No such file or directory
tensorflow-master$ bazel-bin/tensorflow/lite/toco/toco 
--graph_def_file=../my_freeze12xshell.pb --output_file=../my12.tflite 
--output_format=TFLITE --input_shape=2,4,513 --input_array=x_mixed 
--output_array=y_out1,y_out2 --inference_type=QUANTIZED_UINT8 
--inference_input_type=QUANTIZED_UINT8 --std_dev_values=1 --mean_values=0

-bash: bazel-bin/tensorflow/lite/toco/toco: No such file or directory

刚才试了下toco出错了,于是又降级了tf为1.12.3版本的。我这是何必呢?

补充一:我又在tf1.14.0上跑了一次,结果版本解决不了这个问题。同样出错,仍旧是那几个错误

2019-09-21 16:01:59.019420: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032322: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032414: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032435: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: TensorArrayV3

2019-09-21 16:01:59.032452: I tensorflow/lite/toco/import_tensorflow.cc:193] Unsupported data type in placeholder op: 20

2019-09-21 16:01:59.032465: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: TensorArrayV3

2019-09-21 16:01:59.032476: I tensorflow/lite/toco/import_tensorflow.cc:193] Unsupported data type in placeholder op: 20

2019-09-21 16:01:59.032487: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032500: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032512: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032525: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032537: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032549: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032562: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032574: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032586: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032598: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032610: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032623: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032635: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032647: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032659: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032671: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032691: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032703: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032712: I tensorflow/lite/toco/import_tensorflow.cc:193] Unsupported data type in placeholder op: 20

2019-09-21 16:01:59.032722: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: TensorArrayScatterV3

2019-09-21 16:01:59.032734: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.032743: I tensorflow/lite/toco/import_tensorflow.cc:193] Unsupported data type in placeholder op: 20

2019-09-21 16:01:59.038473: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Enter

2019-09-21 16:01:59.038517: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: LoopCond

2019-09-21 16:01:59.038548: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: Exit

2019-09-21 16:01:59.038611: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: TensorArrayReadV3

2019-09-21 16:01:59.038638: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: TensorArrayGatherV3

2019-09-21 16:01:59.038899: I tensorflow/lite/toco/import_tensorflow.cc:1336] Converting unsupported operation: TensorArrayWriteV3

2019-09-21 16:01:59.038929: F tensorflow/lite/toco/tooling_util.cc:1450] Check failed: batch == 1 (2 vs. 1)

Fatal Python error: Aborted

与上次相比似乎没什么区别啊,我了个天啊。

pb转tflite出现了不支持的操作是为啥呢?

Converting unsupported operation: TensorArrayV3
Unsupported data type in placeholder op: 20
Converting unsupported operation: TensorArrayScatterV3
Converting unsupported operation: Enter
Converting unsupported operation: LoopCond
Converting unsupported operation: TensorArrayReadV3
Converting unsupported operation: Exit
Converting unsupported operation: TensorArraySizeV3
Converting unsupported operation: TensorArrayGatherV3

这些Op在模型中都找不到。。。更别说咋改了。。。。。。。。。。。。。。。真是烦。

终于找到了,我放大RNN模块一看我哭了,这是要我改底层源码的节奏啊,我咋有这么牛逼的能力啊??!!

TensorArrayGatherV3如图

TensorArrayV3

TensorArraySizeV3

TensorArrayScatterV3

TensorArraySizeV3

另外有相关问题可以加入QQ群讨论,不设微信群

QQ群:868373192 

语音深度学习及信号处理群

猜你喜欢

转载自blog.csdn.net/SPESEG/article/details/100995272