Как использовать сравнение модели Tensorflow с tflite_diff_example_test - PullRequest
0 голосов
/ 10 сентября 2018

Я обучил модель для обнаружения, которая отлично работает, когда встроена в пример приложения tenorflow.
После замораживания с помощью export_tflite_ssd_graph и преобразования в tflite с использованием toco результаты работают довольно плохо и имеют огромное «разнообразие».

Считывание этого ответа на аналогичную проблему с потерейс точностью я хотел попробовать tflite_diff_example_test на машине с доксирующим тензорным потоком.

Поскольку документация сейчас не развита, я создаю инструмент, ссылающийся на в этой публикации SO
, используя: bazel build tensorflow/contrib/lite/testing/tflite_diff_example_test.cc который прошел гладко.


После выяснения всех моих необходимых входных параметров я попробовал тестовый скрипт с помощью следующих команд:

~/.cache/bazel/_bazel_root/68a62076e91007a7908bc42a32e4cff9/external/bazel_tools/tools/test/test-setup.sh tensorflow/contrib/lite/testing/tflite_diff_example_test '--tensorflow_model=/tensorflow/shared/exported/tflite_graph.pb' '--tflite_model=/tensorflow/shared/exported/detect.tflite' '--input_layer=a,b,c,d' '--input_layer_type=float,float,float,float' '--input_layer_shape=1,3,4,3:1,3,4,3:1,3,4,3:1,3,4,3' '--output_layer=x,y'

и

bazel-bin/tensorflow/contrib/lite/testing/tflite_diff_example_test --tensorflow_model="/tensorflow/shared/exported/tflite_graph.pb" --tflite_model="/tensorflow/shared/exported/detect.tflite" --input_layer=a,b,c,d --input_layer_type=float,float,float,float --input_layer_shape=1,3,4,3:1,3,4,3:1,3,4,3:1,3,4,3 --output_layer=x,y

Оба пути терпят неудачу.Ошибки:

  1. путь: tflite_diff_example_test.cc:line 1: /bazel: Is a directory tflite_diff_example_test.cc: line 3: syntax error near unexpected token '(' tflite_diff_example_test.cc: line 3: 'Licensed under the Apache License, Version 2.0 (the "License");' /root/.cache/bazel/_bazel_root/68a62076e91007a7908bc42a32e4cff9/external/bazel_tools/tools/test/test-setup.sh: line 184: /tensorflow/: Is a directory /root/.cache/bazel/_bazel_root/68a62076e91007a7908bc42a32e4cff9/external/bazel_tools/tools/test/test-setup.sh: line 276: /tensorflow/: Is a directory

  2. путь:

    2018-09-10 09:34:27.650473: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA Failed to create session. Op type not registered 'TFLite_Detection_PostProcess' in binary running on d36de5b65187. Make sure the Op and Kernel are registered in the binary running in this process. Note that if you are loading a saved graph which used ops from tf.contrib, accessing (e.g.) tf.contrib.resampler should be done before importing the graph, as contrib ops are lazily registered when the module is first accessed.

Буду очень признателен за любую помощь, которая позволит мне сравнивать выходные данные двух графиков, используя тесты с тензорными потоками.

1 Ответ

0 голосов
/ 11 сентября 2018

Второй способ, который вы упомянули, - это правильный способ использования tflite_diff. Однако модель обнаружения объекта, содержащую TFLite_Detection_PostProcess op, не может быть запущена через tflite_diff.

tflite_diff запускает предоставленную модель TensorFlow (.pb) во время выполнения TensorFlow и запускает предоставленную модель TensorFlow Lite (.tflite) во время выполнения TensorFlow Lite. Чтобы запустить модель .pb во время выполнения TensorFlow, все операции должны быть реализованы в TensorFlow.

Однако в предоставленной вами модели операция TFLite_Detection_PostProcess не реализована во время выполнения TensorFlow - она ​​доступна только во время выполнения TensorFlow Lite. Поэтому TensorFlow не может разрешить операции. Поэтому, к сожалению, вы не можете использовать инструмент tflite_diff с этой моделью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...