Toybrick

标题: tensorflow 版本问题 [打印本页]

作者: jy_dll    时间: 2020-2-13 14:19
标题: tensorflow 版本问题
请问一下,rknn-toolkit 跟 tensorflow 的版本是否必须一一对应,就是我使用某个固定版本的rknn-toolkit 搭建两个不同版本tensorflow的环境,对于相同的op,在这两个不同版本的tensorflow下是否都可以正常转换?本人遇到的具体问题是:
1.使用docker里面的环境,tensorflow是1.11版本,可以正常load 用1.11生成的tflite文件,同时能成功export_rknn;(tflite不管是否做量化都可以成功load及export, rknn的接口统一不做量化);
2.但是如果用conda自己搭建环境,rknn是同一个版本,tensorflow换成高一点的版本,r.1.14, 这时候可以load用1.14生成的tflite,但是build rknn失败,错误如下:
T Traceback (most recent call last):
T   File "rknn/api/rknn_base.py", line 515, in rknn.api.rknn_base.RKNNBase.build
T   File "rknn/api/rknn_base.py", line 439, in rknn.api.rknn_base.RKNNBase._build
T   File "rknn/base/ovxconfiggenerator.py", line 173, in rknn.base.ovxconfiggenerator.generate_vx_config_from_files
T   File "rknn/base/RKNNlib/RKNNnet.py", line 330, in rknn.base.RKNNlib.RKNNnet.RKNNNet.norm_parameters
T   File "rknn/base/RKNNlib/layer/convolution.py", line 36, in rknn.base.RKNNlib.layer.convolution.Convolution._norm_params
T AttributeError: 'NoneType' object has no attribute 'format'
Build rknn failed!

是否因为tf版本问题,rknn转换对应的关键字不一致等原因,导致不能转换?
其他参考信息:
rknn-toolkit 1.0
转换的模型算法是inception v3,没有特殊op(这里用load_tensorflow的接口转换高版本和低版本的pb文件都没问题的, 目前是不支持转换高版本的tflite文件,低版本的tflite可以)








作者: jefferyzhang    时间: 2020-2-13 14:37
toolkit 1.0 ?为何不用1.3试试呢?

rknn推荐的tf版本是1.13,文档上有写。但是我们Toybrick工作室试过1.14和1.15均可以正常工作。低于1.13不建议使用。
生成pb所用的tf版本必须和转换rknn所用的tf版本一致。
作者: jy_dll    时间: 2020-2-13 14:39
补充问题:
对于低版本r.11的tflite,如果只做weight的量化,rknn能load和expor,不报错, 但是生成的rknn模型大小只有2k,也就是目前tflite的接口只有不量化的低版本r1.11的tflite可以成功导出rknn模型
作者: jefferyzhang    时间: 2020-2-13 14:51
jy_dll 发表于 2020-2-13 14:39
补充问题:
对于低版本r.11的tflite,如果只做weight的量化,rknn能load和expor,不报错, 但是生成的rknn ...

你看我们基础教程里那张tflite训练量化转rknn了么。
那个教程用的tf就是1.14
作者: jy_dll    时间: 2020-2-14 14:55
jefferyzhang 发表于 2020-2-13 14:51
你看我们基础教程里那张tflite训练量化转rknn了么。
那个教程用的tf就是1.14 ...

好的,谢谢;我也知道新版本可以用,但是实际开发中有些版本也不是说升就升的,所以就想上来这里问问,看看有没有解决方法
作者: jy_dll    时间: 2020-2-14 15:02
话说rknn量化可以用gpu吗,我看量化的时候显存没有占用很多,猜测应该用的是cpu?因为量化花的时间有点长,新版本的rknn-toolkit没有细看,不知道有没有这个功能;所以才打算要用tflite的量化代替
作者: jefferyzhang    时间: 2020-2-14 15:20
jy_dll 发表于 2020-2-14 15:02
话说rknn量化可以用gpu吗,我看量化的时候显存没有占用很多,猜测应该用的是cpu?因为量化花的时间有点长, ...

这个我不确定,应该是CPU跑的,而且这个用GPU我觉得不会有明显提升,都是交互式来调整每一层量化参数的。量化时间长是很正常的。
如果你想用GPU可以用tensorflow的训练量化功能,训练中就完成量化,这样准确度会比较高




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