Toybrick

标题: 使用RKNN-Toolkit对tensorflow模型转换失败 [打印本页]

作者: 程子    时间: 2019-2-13 11:36
标题: 使用RKNN-Toolkit对tensorflow模型转换失败
  1. /usr/lib64/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
  2.   from ._conv import register_converters as _register_converters
  3. --> Init runtime environment
  4. done
  5. --> Loading model
  6. Catch exception when loading tensorflow model: XXXXXXXX.pb!
  7. Traceback (most recent call last):
  8.   File "/usr/local/lib64/python3.6/site-packages/rknn/api/rknn.py", line 50, in load_tensorflow
  9.     std_values=std_values)
  10.   File "rknn/api/redirect_stdout.py", line 67, in rknn.api.redirect_stdout.redirect_stdout.func_wrapper
  11.   File "rknn/api/redirect_stdout.py", line 68, in rknn.api.redirect_stdout.redirect_stdout.func_wrapper
  12.   File "rknn/api/rknn_base.py", line 185, in rknn.api.rknn_base.RKNNBase.load_tensorflow
  13.   File "rknn/base/rknnlib/converter/convert_tf.py", line 533, in rknn.base.rknnlib.converter.convert_tf.convert_tf.match_paragraph_and_param
  14.   File "rknn/base/rknnlib/converter/convert_tf.py", line 438, in rknn.base.rknnlib.converter.convert_tf.convert_tf._tf_push_ready_node
  15. TypeError: 'NoneType' object is not iterable

  16. done
  17. --> Building model
  18. done
  19. Export RKNN model failed!
复制代码
转换代码使用wiki里面的 http://t.rock-chips.com/wiki.php?mod=view&id=36
模型PB文件不便公开。但是可以通过tensorflow的TOCO转换为tflite并且成功用CPU推理。

作者: jefferyzhang    时间: 2019-2-13 15:27
麻烦重新用下最新版rknn-toolkit 0.9.8 初始化时候带上verbose参数重新运行下,然后把verbose打印贴上来,这样就不需要pb文件了
作者: qiaoqiang126    时间: 2019-2-13 15:42
rknn-toolkit 0.9.8   去哪里下载呢?
作者: jefferyzhang    时间: 2019-2-13 15:56
qiaoqiang126 发表于 2019-2-13 15:42
rknn-toolkit 0.9.8   去哪里下载呢?

不好意思,github上的同事还没更新,我单独给你一个百度网盘地址先用吧
链接: https://pan.baidu.com/s/1ypkndmI7P62W8DWf0AW5ew 提取码: qhhy
作者: 程子    时间: 2019-2-13 18:19
  1. D import clients finished
  2. I Current TF Model producer version 0 min consumer version 0 bad consumer version []
  3. I short-cut <一个Op名字>:out0 - <一个Op名字>:in0 skip <一个Op名字>/read
  4. I short-cut <一个Op名字>:out0 - <一个Op名字>:in0 skip <一个Op名字>/read
  5. I short-cut <一个Op名字>:out0 - <一个Op名字>:in0 skip <一个Op名字>/read
  6. I short-cut <一个Op名字>:out0 - <一个Op名字>:in0 skip <一个Op名字>/read
  7. I short-cut <一个Op名字>:out0 - <一个Op名字>:in1 skip <一个Op名字>/read
  8. I short-cut <一个Op名字>:out0 - <一个Op名字>:in1 skip <一个Op名字>/read
  9. I short-cut <一个Op名字>:out0 - <一个Op名字>:in1 skip <一个Op名字>/read
  10. I short-cut <一个Op名字>:out0 - <一个Op名字>:in1 skip <一个Op名字>/read
  11. I short-cut <一个Op名字>:out0 - <一个Op名字>:in1 skip <一个Op名字>/read
  12. I short-cut <一个Op名字>:out0 - <一个Op名字>:in0 skip <一个Op名字>/read
  13. I short-cut <一个Op名字>:out0 - <一个Op名字>:in1 skip <一个Op名字>/read
  14. I short-cut <一个Op名字>:out0 - <一个Op名字>:in1 skip <一个Op名字>/read
  15. I short-cut <一个Op名字>:out0 - <一个Op名字>:in0 skip <一个Op名字>/read
  16. I short-cut <一个Op名字>:out0 - <一个Op名字>:in0 skip <一个Op名字>/read
  17. I short-cut <一个Op名字>:out0 - <一个Op名字>:in1 skip <一个Op名字>/read
  18. I short-cut <一个Op名字>:out0 - <一个Op名字>:in0 skip <一个Op名字>/read
  19. I short-cut <一个Op名字>:out0 - <一个Op名字>:in1 skip <一个Op名字>/read
  20. I short-cut <一个Op名字>:out0 - <一个Op名字>:in1 skip <一个Op名字>/read
  21. I short-cut <一个Op名字>:out0 - <一个Op名字>:in1 skip <一个Op名字>/read
  22. I short-cut <一个Op名字>:out0 - <一个Op名字>:in0 skip <一个Op名字>/read
  23. I short-cut <一个Op名字>:out0 - <一个Op名字>:in1 skip <一个Op名字>/read
  24. I short-cut <一个Op名字>:out0 - <一个Op名字>:in0 skip <一个Op名字>/read
  25. I short-cut <一个Op名字>:out0 - <一个Op名字>:in0 skip <一个Op名字>/read
  26. I short-cut <一个Op名字>:out0 - <一个Op名字>:in1 skip <一个Op名字>/read
  27. I short-cut <一个Op名字>:out0 - <一个Op名字>:in0 skip <一个Op名字>/read
  28. I short-cut <一个Op名字>:out0 - <一个Op名字>:in1 skip <一个Op名字>/read
  29. I short-cut <一个Op名字>:out0 - <一个Op名字>:in1 skip <一个Op名字>/read
  30. I short-cut <一个Op名字>:out0 - <一个Op名字>:in1 skip <一个Op名字>/read
  31. I Have 16 tensors convert to const tensor
  32. [<一堆Op的List>]
  33. I build output layer <一个Op名字>:out0
  34. I build input layer input_image:out0
  35. I Try match BiasAdd <一个Op名字>
  36. I Match [[<一堆Op的List>]] [['BiasAdd', 'DConv', 'C', 'C_1', 'C_2']] to [['deconvolution']]
  37. I Try match Mul <一个好像有问题的Op>/mul
  38. I Match [['<一个好像有问题的Op>/mul']] [['Mul']] to [['multiply']]
  39. I Try match Sqrt <一个好像有问题的Op>/Sqrt
  40. W Not match node <一个好像有问题的Op>/Sqrt Sqrt
  41. E Catch exception when loading tensorflow model: TNG_RKNN.pb!
  42. T Traceback (most recent call last):
  43. T   File "rknn/api/rknn_base.py", line 191, in rknn.api.rknn_base.RKNNBase.load_tensorflow
  44. T   File "rknn/base/rknnlib/converter/convert_tf.py", line 533, in rknn.base.rknnlib.converter.convert_tf.convert_tf.match_paragraph_and_param
  45. T   File "rknn/base/rknnlib/converter/convert_tf.py", line 438, in rknn.base.rknnlib.converter.convert_tf.convert_tf._tf_push_ready_node
  46. T TypeError: 'NoneType' object is not iterable
  47. model_input or data_input or model_quantize is None, please check it.
复制代码

  1. Not match node <一个好像有问题的Op>/Sqrt Sqrt
复制代码

意思是Sqrt这个算子不支持吗?还是啥?

  1. model_input or data_input or model_quantize is None, please check it.
复制代码

这句话又是什么意思?model_input data_input model_quantize 是应该在哪里的?
作者: zhangzj    时间: 2019-2-14 10:50
I Try match Sqrt <一个好像有问题的Op>/Sqrt
W Not match node <一个好像有问题的Op>/Sqrt Sqrt
E Catch exception when loading tensorflow model: TNG_RKNN.pb!

应该是这个op不支持,能否贴出这几行实际的打印信息?
作者: 程子    时间: 2019-2-14 11:46
本帖最后由 程子 于 2019-2-14 13:58 编辑

去掉了相关OP,模型转换似乎成功了,文件大小比PB文件小了一半,但是转换的时候并没有量化 (rknn.build(do_quantization=False)),不知道为什么。推理也跑通了。

出现问题的应该是GDN中的Sqrt算子,计算方式如下:
  1. y[i] = x[i] / sqrt(beta[i] + sum_j(gamma[j, i] * x[j]))
复制代码


除了论坛以外有没有其他快一点的交流空间?比如QQ微信啥的。或者我们可以自己建个群吗?

作者: zhangzj    时间: 2019-2-14 17:43
程子 发表于 2019-2-14 11:46
去掉了相关OP,模型转换似乎成功了,文件大小比PB文件小了一半,但是转换的时候并没有量化 (rknn.build(do_ ...

目前还只有论坛一个交流空间,后续若有建qq微信群会发布出来。
如果你有兴趣,也可以组建一个兴趣爱好交流群,发个帖子出来让大家知道,有兴趣的童鞋会加进去交流的。




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3