首页 文章

TensorFlow - 使用toco将* .pb文件转换为* .tflite时出错

提问于
浏览
0

我使用以下示例创建tensorflow模型:http://cv-tricks.com/tensorflow-tutorial/training-convolutional-neural-network-for-image-classification/您可以从此处下载代码:https://github.com/sankit1/cv-tricks.com/tree/master/Tensorflow-tutorials/tutorial-2-image-classifier此外,我使用http://cv-tricks.com/how-to/freeze-tensorflow-models/中的"2. Freezing the graph"部分创建了我的模型的* .pb文件 . 我试图用toco命令行工具转换* .pb文件,如"Convert a TensorFlow SavedModel to TensorFlow Lite"在https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/toco/g3doc/cmdline_examples.md#savedmodel上描述并得到他跟随错误:

(venv)user @ user-desktop:〜/ PycharmProjects / tensorflow_tutorial / tensorflow $ bazel run -c opt tensorflow / contrib / lite / toco:toco - --savedmodel_directory = / home / user / PycharmProjects / tensorflow_tutorial / tutorial-2- image-classifier --output_file = / home / user / PycharmProjects / tensorflow_tutorial / tutorial-2-image-classifier / dogs-cats-model.tflite警告:/home/user/.cache/bazel/_bazel_user/e21a56d90e65395c94952f8aa3d0c4bc/external/protobuf_archive / WORKSPACE:1:/home/user/.cache/bazel/_bazel_user/e21a56d90e65395c94952f8aa3d0c4bc/external/protobuf_archive/WORKSPACE(@com_google_protobuf)中的工作区名称与存储库中给出的名称不匹配's definition (@protobuf_archive); this will cause a build error in future versions INFO: Analysed target //tensorflow/contrib/lite/toco:toco (0 packages loaded). INFO: Found 1 target... WARNING: failed to create one or more convenience symlinks for prefix ' bazel- ': cannot create symbolic link bazel-out -> /home/user/.cache/bazel/_bazel_user/e21a56d90e65395c94952f8aa3d0c4bc/execroot/org_tensorflow/bazel-out: /home/user/PycharmProjects/tensorflow_tutorial/tensorflow/bazel-out (File exists) cannot create symbolic link bazel-out -> /home/user/.cache/bazel/_bazel_user/e21a56d90e65395c94952f8aa3d0c4bc/execroot/org_tensorflow/bazel-out: /home/user/PycharmProjects/tensorflow_tutorial/tensorflow/bazel-out (File exists) cannot create symbolic link bazel-tensorflow -> /home/user/.cache/bazel/_bazel_user/e21a56d90e65395c94952f8aa3d0c4bc/execroot/org_tensorflow: /home/user/PycharmProjects/tensorflow_tutorial/tensorflow/bazel-tensorflow (File exists) cannot create symbolic link bazel-bin -> /home/user/.cache/bazel/_bazel_user/e21a56d90e65395c94952f8aa3d0c4bc/execroot/org_tensorflow/bazel-out/k8-opt/bin: /home/user/PycharmProjects/tensorflow_tutorial/tensorflow/bazel-bin (File exists) cannot create symbolic link bazel-testlogs -> /home/user/.cache/bazel/_bazel_user/e21a56d90e65395c94952f8aa3d0c4bc/execroot/org_tensorflow/bazel-out/k8-opt/testlogs: /home/user/PycharmProjects/tensorflow_tutorial/tensorflow/bazel-testlogs (File exists) cannot create symbolic link bazel-genfiles -> /home/user/.cache/bazel/_bazel_user/e21a56d90e65395c94952f8aa3d0c4bc/execroot/org_tensorflow/bazel-out/k8-opt/genfiles: /home/user/PycharmProjects/tensorflow_tutorial/tensorflow/bazel-genfiles (File exists) Target //tensorflow/contrib/lite/toco:toco up-to-date: /home/user/.cache/bazel/_bazel_user/e21a56d90e65395c94952f8aa3d0c4bc/execroot/org_tensorflow/bazel-out/k8-opt/bin/tensorflow/contrib/lite/toco/toco INFO: Elapsed time: 0.271s, Critical Path: 0.00s INFO: 0 processes. INFO: Build completed successfully, 1 total action INFO: Running command line: /home/user/.cache/bazel/_bazel_user/e21a56d90e65395c94952f8aa3d0c4bc/execroot/org_tensorflow/bazel-out/k8-opt/bin/tensorflow/contrib/lite/toco/toco ' --savedmodel_directory = / home / user / PycharmProjects / tensorflow_tutorial / tutorial-2-image-classifier ' ' --output_file = / home / user / PycharmProjects / tensorflow_tutorial / tutorial-2-image-classifier / dogs-cats-model.tflite'2018-05-07 01 :33:13.776954:F tensorflow / contrib / lite / toco / toco_saved_model.cc:34] Check failed: tensorflow::MaybeSavedModelDirectory(model_path) Model is not saved in the supported SavedModel format.

它抛出这个错误的功能是在MaybeSavedModelDirectory https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/toco/toco_saved_model.cc,我看了看它的https://github.com/tensorflow/tensorflow/blob/master/tensorflow/cc/saved_model/loader.cc其实它寻找型号目录.pb或 .pbtxt文件的执行情况和我得到了请求的位置这个文件,所以我为什么得到这个错误?

机器详细信息:操作系统平台和分发 - ubuntu x64,TensorFlow从 - pip安装,TensorFlow版本 - cpu版本1.8.0,Bazel版本 - 0.13.0,CUDA / cuDNN版本 - 没有cuda,GPU模型和内存 - 没有gpu,确切命令重现 - 不需要,python版本 - 3.5.2

1 回答

  • 0

    TensorFlow 1.8支持两种格式:

    在您的情况下,如果您已经使用了freeze_graph.py,那么您应该遵循引用GraphDefs的文档 . TensorFlow Lite的最新文档可用here .

    从文档(TensorFlow 1.9)复制:

    以下示例将基本TensorFlow GraphDef(由 freeze_graph.py 冻结)转换为TensorFlow Lite FlatBuffer以执行浮点推理 . 冻结图包含存储在检查点文件中的变量作为Const操作 .

    curl https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_0.50_128_frozen.tgz \
      | tar xzv -C /tmp
    tflite_convert \
      --output_file=/tmp/foo.tflite \
      --graph_def_file=/tmp/mobilenet_v1_0.50_128/frozen_graph.pb \
      --input_arrays=input \
      --output_arrays=MobilenetV1/Predictions/Reshape_1
    

    尽可能自动确定 input_shapes 的值 .

相关问题