Tensorflow [Toco] конвертирует модель в оптимизированный формат, вызывает ValueError - PullRequest
0 голосов
/ 08 ноября 2018

Я только начал пробовать Tensorflow, я бы хотел провести несколько экспериментов на Android, но я читал, что Tensorflow for Poets (версия для мобильных устройств) поддерживает .tflite, в то время как загруженные и найденные мной модели гуглят .pb.

Поэтому я решил преобразовать их, используя toco, но когда я выполняю команду для преобразования, я всегда получаю эту ошибку

ValueError: Обнаружен неверный тензор 'input'.

Команда CLI:

toco   --graph_def_file=tensorflow_inception_graph.pb   --output_file=optimized_graph.tflite   --input_format=TENSORFLOW_GRAPHDEF --output_format=TFLITE   --input_shape=1,300,300,3   --input_array=input   --o
utput_array=final_result   --inference_type=FLOAT   --inference_input_type=FLOAT

Что с этим не так?

StackTrace

File "/home/Mitro/venv/bin/toco", line 11, in <module>
    sys.exit(main())
  File "/home/Mitro/venv/lib/python3.5/site-packages/tensorflow/contrib/lite/python/tflite_convert.py", line 401, in main
    app.run(main=run_main, argv=sys.argv[:1])
  File "/home/Mitro/venv/lib/python3.5/site-packages/tensorflow/python/platform/app.py", line 125, in run
    _sys.exit(main(argv))
  File "/home/Mitro/venv/lib/python3.5/site-packages/tensorflow/contrib/lite/python/tflite_convert.py", line 397, in run_main
    _convert_model(tflite_flags)
  File "/home/Mitro/venv/lib/python3.5/site-packages/tensorflow/contrib/lite/python/tflite_convert.py", line 100, in _convert_model
    converter = _get_toco_converter(flags)
  File "/home/Mitro/venv/lib/python3.5/site-packages/tensorflow/contrib/lite/python/tflite_convert.py", line 87, in _get_toco_converter
    return converter_fn(**converter_kwargs)
  File "/home/Mitro/venv/lib/python3.5/site-packages/tensorflow/contrib/lite/python/lite.py", line 271, in from_frozen_graph
    sess.graph, input_arrays)
  File "/home/Mitro/venv/lib/python3.5/site-packages/tensorflow/contrib/lite/python/convert_saved_model.py", line 189, in get_tensors_from_tensor_names
    ",".join(invalid_tensors)))

Моя ссылка от Google

1 Ответ

0 голосов
/ 21 ноября 2018

Запустите этот скрипт , изменив параметр model_file на файл pb, и в качестве вывода у вас будет что-то вроде этого:

Тензор ("import / Заполнитель : 0", форма = (?, 299, 299, 3), dtype = float32)
Тензор ("import / final_result : 0", shape = (?, 5), dtype = float32)

в этом случае они являются параметрами, через которые вы должны пройти
--input_array = Заполнитель
--output_array = final_result

Здесь - полная информация

...