使用Bazel运行Toco转换PB到TLite时遇包路径错误,求正确命令路径
解决Bazel运行Toco时的路径错误问题
首先,你的错误提示说明Bazel找不到指定包的BUILD文件,这主要有两个原因:一是TensorFlow的目录结构在2.x版本后发生了变化,contrib目录已经被移除;二是通过pip安装的TensorFlow是预编译的二进制包,并不包含Bazel构建所需的源码和BUILD文件。
下面是两种可行的解决办法:
方法一:直接使用pip安装的tflite_convert工具(推荐)
既然你已经通过pip安装了TensorFlow,其实不需要用Bazel来运行Toco——TensorFlow的pip包已经自带了tflite_convert命令行工具,直接用它转换即可:
tflite_convert --input_file=sample.pb --output_file=sample.tlite
这个方法最简单,不需要处理Bazel和源码的问题。
方法二:从TensorFlow源码用Bazel构建并运行Toco
如果你一定要用Bazel,需要先获取TensorFlow的源码,并使用正确的路径(因为contrib目录已被移除):
- 克隆TensorFlow源码并切换到与你pip安装版本一致的分支:
git clone https://github.com/tensorflow/tensorflow.git cd tensorflow git checkout 你的TensorFlow版本号 # 比如 git checkout 2.15.0 - 使用更新后的Toco路径运行Bazel命令(注意路径里没有
contrib了,还要加一个额外的--分隔Bazel参数和Toco参数):bazel run //tensorflow/lite/toco:toco -- --input_file=sample.pb --output_file=sample.tlite
为什么之前的命令失败?
- TensorFlow 2.x之后,
contrib模块被拆分或移除,旧路径//tensorflow/contrib/lite/toco:toco已经不存在,正确的路径是//tensorflow/lite/toco:toco。 - pip安装的TensorFlow是预编译包,没有Bazel构建所需的BUILD文件和完整源码,所以Bazel无法找到对应的包。
内容的提问来源于stack exchange,提问作者yeswanth
相关产品推荐
相关产品推荐

