首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >toco_from_protos:找不到命令

toco_from_protos:找不到命令
EN

Stack Overflow用户
提问于 2019-04-02 21:04:41
回答 3查看 2.9K关注 0票数 2

我正在使用下面的链接将我的Tensorflow模型转换为tf lite模型https://www.tensorflow.org/lite/convert/python_api,在这里我遵循了“从文件中导出GraphDef”的说明,但我得到了以下错误

代码语言:javascript
复制
    "TOCO failed. See console for info.\n%s\n%s\n" % (stdout, stderr))
     tensorflow.lite.python.convert.ConverterError: TOCO failed. See console for info.
    /bin/sh: toco_from_protos: command not found

我安装了最新的tensorflow v1.13.1

EN

回答 3

Stack Overflow用户

发布于 2019-08-01 18:39:57

问题所在

Tensorflow调用特定的二进制文件来转换tflite模型中的.pb文件(由protobuf存储)。二进制文件是'toco_from_protos',错误消息表明外壳解释器(在本例中是‘/bin/sh’)无法找到二进制文件('toco_from_proto')。

您需要在path环境变量中包含'toco_from_proto‘文件的路径。

如何完成此操作

首先,检查文件是否存在。您可以使用'locate‘命令,例如:

代码语言:javascript
复制
$ locate toco_from_proto
/home/user/anaconda3/envs/tensorflow/bin/toco_from_protos
/home/user/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/lite/toco/python/toco_from_protos.py
/home/user/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/lite/toco/python/__pycache__/toco_from_protos.cpython-36.pyc

在我的例子中,我使用Anaconda来管理环境。因此,二进制文件位于环境容器(本例中为“tensorflow”)的二进制路径(“bin”文件夹)中。

要确保正确执行二进制文件,请将'toco_from_protos‘文件的路径包含在path环境变量中。如果您使用的是基于Linux的系统,则可以执行以下操作:

代码语言:javascript
复制
$ export PATH=$PATH:/home/user/anaconda3/envs/tensorflow/bin

如果您使用的是IDE程序(例如Pycharm),则可以使用导出PATH变量时使用的控制台调用IDE运行脚本。例如:

代码语言:javascript
复制
$ export PATH=$PATH:/home/user/anaconda3/envs/tensorflow/bin
$ /opt/pycharm-community-2018.1.4/bin/pycharm.sh

新路径值更改仅保留在控制台窗口中,因此,如果您希望使更改持久存在,请在'~/.bashrc‘文件中包含导出语句。

票数 3
EN

Stack Overflow用户

发布于 2019-06-12 16:54:32

我也有同样的问题,并通过使用官方docker镜像解决了问题,主机上有一个全新的Ubuntu 18.04。

代码语言:javascript
复制
docker run --runtime=nvidia -v /path/to/my/project:/mapped/docker/path -it tensorflow/tensorflow:latest-gpu bash

然后在docker中运行转换脚本:

代码语言:javascript
复制
model = load_model() # keras model
output_names = [node.op.name for node in model.outputs]
input_names = [node.op.name for node in model.inputs]
with tf.keras.backend.get_session() as sess:
    sess.run(tf.global_variables_initializer())
    frozen_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, output_names)
    converter = tf.lite.TFLiteConverter.from_session(sess, model.inputs, model.outputs)
    tflite_model = converter.convert()
    open("converted_model.tflite", "wb").write(tflite_model)

在撰写本文时,tensorflow/tensorflow:latest-gpu的版本是1.13.1

票数 2
EN

Stack Overflow用户

发布于 2022-01-18 13:30:31

我在tensorflow 1.14中也得到了同样的错误日志。对于我来说,问题不是在转换器中,而是与路径未得到解决有关。

在运行Python脚本之前,它对我的export PATH=$PATH:~/.local/bin起作用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55475551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档