TensorFlow - ошибка при преобразовании файла * .pb в * .tflite с помощью toco - PullRequest
0 голосов
/ 12 мая 2018

Я использовал следующий пример для создания модели tenorflow: http://cv -tricks.com / tenorflow-tutorial / training-сверточная-нейронная сеть-для-классификации изображений / Вы можете скачать кодотсюда: https://github.com/sankit1/cv-tricks.com/tree/master/Tensorflow-tutorials/tutorial-2-image-classifier Также я использовал раздел «2. Замораживание графика» из http://cv -tricks.com / how-to / freeze-tenorflow-models / для создания *.pb файл моей модели.Я пытался преобразовать файл * .pb с помощью инструмента командной строки toco, как описано в «Преобразовать TensorFlow SavedModel в TensorFlow Lite» в https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/toco/g3doc/cmdline_examples.md#savedmodel, и получил следующую ошибку:

(venv)user @ user-desktop: ~ / PycharmProjects / tenorsflow_tutorial / tenorflow $ bazel run -c opt tensflowflow / contrib / lite / toco: toco - --savedmodel_directory = / home / user / PycharmProjects / tenorsflow_tutorial / tutorial-2-image-classifier--output_file = / home / user / PycharmProjects / tenorflow_tutorial / tutorial-2-image-классификатор / dogs-cats-model.tflite ПРЕДУПРЕЖДЕНИЕ: /home/user/.cache/bazel/_bazel_user/e21a56d90e65395c94952f8atoWKK/ternal_p0_WEF0FF4EWEB01: Имя рабочей области в /home/user/.cache/bazel/_bazel_user/e21a56d90e65395c94952f8aa3d0c4bc/external/protobuf_archive/WORKSPACE (@com_google_protobuf) не соответствует имени, указанному в определении репозитория;это приведет к ошибке сборки в будущих версиях. INFO: Анализируемая цель // tenorflow / contrib / lite / toco: toco (загружено 0 пакетов).ИНФОРМАЦИЯ: Найдена 1 цель ... ПРЕДУПРЕЖДЕНИЕ: не удалось создать одну или несколько вспомогательных символических ссылок для префикса 'bazel-': невозможно создать символическую ссылку bazel-out -> /home/user/.cache/bazel/_bazel_user/e21a56d90e65395c94952f8aa3d0c4bc/execrootorg_tensorflow / bazel-out: / home / user / PycharmProjects / tenorflow_tutorial / tenorflow / bazel-out (файл существует) не может создать символьную ссылку bazel-out/ bazel-out: / home / user / PycharmProjects / tenorflow_tutorial / tenorflow / bazel-out (файл существует) не может создать символическую ссылку/ home / user / PycharmProjects /ensorflow_tutorial / tenorflow / bazel-tenorflow (файл существует) не может создать символическую ссылку-opt / bin: / home / user / PycharmProjects / tenorflow_tutorial / tenorflow / bazel-bin (файл существует) не может создать символическую ссылку bazel-testlogs -> /home/user/.cache/bazel/_bazel_user/e21a56d90e65395c94952f8aa3d0c4bc/execroot/org_tensorflow/bazel-out/k8-ops/love/optools/k8-opt/ PycharmProjects / tenorflow_tutorial / tenorflow / bazel-testlogs (файл существует) не может создать символическую ссылку: / home / user / PycharmProjects / tenorflow_tutorial / tenorflow / bazel-genfiles (файл существует) Целевой объект //ensorflow / contrib / lite / toco: актуальный toco: /home/user/.cache/bazel/_bazel_user/e21a56d90e65395ba05052/ execroot / org_tensorflow / bazel-out / k8-opt / bin / тензор потока / contrib / lite / toco / toco ИНФО: истекшее время: 0,271 с, критический путь: 0,00 с ИНФО: 0 процессов.ИНФОРМАЦИЯ: Сборка завершена успешно, всего 1 действие ИНФОРМАЦИЯ: Запуск командной строки: /home/user/.cache/bazel/_bazel_user/e21a56d90e65395c94952f8aa3d0c4bc/execroot/org_tensorflow/bazel-out/k8-opt/bin/colis/conf/ toco '--savedmodel_directory = / home / user / PycharmProjects / tenorflow_tutorial / tutorial-2-image-classifier' '--output_file = / home / user / PycharmProjects / tenorflow_tutorial / tutorial-2-image-классификатор / dogs-cats-model.tflite '2018-05-07 01: 33: 13.776954: F tenorflow / contrib / lite / toco / toco_saved_model.cc: 34] Проверка не пройдена: tenorflow :: MaybeSavedModelDirectory (model_path) Модель не сохраняется в поддерживаемомФормат SavedModel.

Функция, которая выдает эту ошибку: 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 - версия 1.8.0 для процессора, версия Bazel - 0.13.0, версия CUDA / cuDNN - без cuda, модель GPU и память - без gpu, точная команда для воспроизведения - не требуетсяверсия Python - 3.5.2

1 Ответ

0 голосов
/ 27 июля 2018

TensorFlow 1.8 поддерживает два формата:

  1. SavedModels
  2. Замороженные GraphDefs, сгенерированные с помощью freeze_graph.py

В вашем случае, если вы уже использовали freeze_graph.py, вы должны следовать документации, которая ссылается на GraphDefs. Последняя документация от TensorFlow Lite доступна здесь .

Скопировано из документации (TensorFlow 1.9):

Следующий пример преобразует базовый TensorFlow GraphDef (замороженный на freeze_graph.py) в TensorFlow Lite FlatBuffer для выполнения вывода с плавающей запятой. Замороженные графики содержат переменные, хранящиеся в файлах Checkpoint в виде Const ops.

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 определяется автоматически при любой возможности.

...