Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow toco_from_protos:未找到命令_Tensorflow_Tensorflow Lite - Fatal编程技术网

Tensorflow toco_from_protos:未找到命令

Tensorflow toco_from_protos:未找到命令,tensorflow,tensorflow-lite,Tensorflow,Tensorflow Lite,我使用以下链接将Tensorflow模型转换为tf lite模型 ,在这里,我按照“从文件导出GraphDef”的说明进行操作 但我有以下错误 "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_fr

我使用以下链接将Tensorflow模型转换为tf lite模型 ,在这里,我按照“从文件导出GraphDef”的说明进行操作 但我有以下错误

    "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

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

docker run --runtime=nvidia -v /path/to/my/project:/mapped/docker/path -it tensorflow/tensorflow:latest-gpu bash
然后在docker中运行转换脚本:

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)
在撰写本书时,最新的gpu版本是
1.13.1

Tensorflow调用特定的二进制文件,以转换tflite模型中的.pb文件(由protobuf存储)。二进制文件为“toco_from_protos”,错误消息表明shell解释器(本例中为“/bin/sh”)无法找到二进制文件(“toco_from_proto”)

您需要在path环境变量中包含“toco_from_proto”文件的路径

如何做到这一点 首先,检查文件是否存在。您可以使用命令“locate”,例如:

$ 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
$ export PATH=$PATH:/home/user/anaconda3/envs/tensorflow/bin
$ /opt/pycharm-community-2018.1.4/bin/pycharm.sh
在我的例子中,我使用蟒蛇来管理环境。因此,二进制文件位于环境容器(本例中为tensorflow)的二进制路径(“bin”文件夹)中

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

$ export PATH=$PATH:/home/user/anaconda3/envs/tensorflow/bin
如果您使用的是IDE程序(例如Pycharm),则可以使用用于导出PATH变量的同一控制台调用IDE运行脚本。例如:

$ 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
$ export PATH=$PATH:/home/user/anaconda3/envs/tensorflow/bin
$ /opt/pycharm-community-2018.1.4/bin/pycharm.sh

新的路径值更改仅保留在该控制台窗口中,因此如果要使更改持久化,请在“~/.bashrc”文件中包含导出语句。

您解决了问题吗?不,不是真的,问题在于设置路径,它在我的计算机上找不到路径,尝试设置路径但不起作用,是用不同的机器改装的你能给我一个如何改装的提示吗?这个问题快把我逼疯了:(@lelloman在我同事的一台机器上转换,不知何故他的tensorflow处于工作状态,你可以使用另一台机器,或者找一个没有更新旧版本的机器的人,最后我用docker映像解决了这个问题,现在我试过了,我想我再也不会在系统上安装tensorflow了Hi goe,似乎即使是after将virtualenv bin添加到$PATH变量Tensorflow(2.0)无法从_protos中找到toco_,您知道发生了什么吗?我还没有测试Tensorflow 2.0,因此我不确定它如何与路径一起工作,抱歉。请检查您所指向的来自_protos二进制文件的toco_编译是否与您正在使用的Tensorflow库兼容。