我正在使用下面的链接将我的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
发布于 2019-08-01 18:39:57
问题所在
Tensorflow调用特定的二进制文件来转换tflite模型中的.pb文件(由protobuf存储)。二进制文件是'toco_from_protos',错误消息表明外壳解释器(在本例中是‘/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来管理环境。因此,二进制文件位于环境容器(本例中为“tensorflow”)的二进制路径(“bin”文件夹)中。
要确保正确执行二进制文件,请将'toco_from_protos‘文件的路径包含在path环境变量中。如果您使用的是基于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新路径值更改仅保留在控制台窗口中,因此,如果您希望使更改持久存在,请在'~/.bashrc‘文件中包含导出语句。
发布于 2019-06-12 16:54:32
我也有同样的问题,并通过使用官方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
发布于 2022-01-18 13:30:31
我在tensorflow 1.14中也得到了同样的错误日志。对于我来说,问题不是在转换器中,而是与路径未得到解决有关。
在运行Python脚本之前,它对我的export PATH=$PATH:~/.local/bin起作用
https://stackoverflow.com/questions/55475551
复制相似问题