toco_from_protos:找不到命令

时间:2019-04-02 13:04:41

标签: tensorflow tensorflow-lite

我正在使用以下链接将我的Tensorflow模型转换为TF Lite模型 https://www.tensorflow.org/lite/convert/python_api,在这里,我按照“从文件导出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

2 个答案:

答案 0 :(得分: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)

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

答案 1 :(得分:0)

问题

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

就我而言,我正在使用Anaconda来管理环境。因此,二进制文件位于环境容器的二进制路径(“ bin”文件夹)中(在这种情况下为“ tensorflow”)。

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

$ export PATH=$PATH:/home/user/anaconda3/envs/tensorflow/bin

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

$ export PATH=$PATH:/home/user/anaconda3/envs/tensorflow/bin
$ /opt/pycharm-community-2018.1.4/bin/pycharm.sh

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