TFLite: невозможно получить логический вывод с помощью MobilenetV2 в пользовательском наборе данных - PullRequest
0 голосов
/ 22 мая 2018

Я перешел по этой ссылке и успешно создал замороженный график для MoiblenetV2_1.4_224 путем точной настройки моего пользовательского набора данных.Затем я последовал за tenorflow-for-poets: tflite , чтобы создать граф tflite, используя toco, используя следующую команду.

IMAGE_SIZE=224
toco \
--input_file=frozen_mobilenet_v2.pb \
--output_file=optimized_graph.lite \
--input_format=TENSORFLOW_GRAPHDEF \
--output_format=TFLITE \
--input_shape=10,${IMAGE_SIZE},${IMAGE_SIZE},3 \
--input_array=input \
--output_array=MobilenetV2/Predictions/Softmax \
--inference_type=FLOAT \
--input_data_type=FLOAT

Граф lite был успешно создан, но во время вывода, во время работыИнтерпретатор tflite Я получаю следующую ошибку.Из-за этого я не получаю никаких выводов.

Input error: Failed to get input dimensions. 0-th input should have 6021120 bytes, but found 602112 bytes.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Ошибка ввода: не удалось получить размеры ввода.

Флаг командной строки должен быть --input_arrays, а не --input_array.(Множественное число вместо единственного числа).То же самое --output_arrays вместо --output_array.Это должно решить вашу ошибку.Таким образом, команда должна быть:

IMAGE_SIZE=224
toco \
--input_file=frozen_mobilenet_v2.pb \
--output_file=optimized_graph.lite \
--input_format=TENSORFLOW_GRAPHDEF \
--output_format=TFLITE \
--input_shape=10,${IMAGE_SIZE},${IMAGE_SIZE},3 \
--input_arrays=input \
--output_arrays=MobilenetV2/Predictions/Softmax \
--inference_type=FLOAT \
--input_data_type=FLOAT

Дополнительный совет отладки

Для дальнейшего использования, если все ваши флаги верны, то следующим шагом будет проверка того, что ваши имена входного и выходного тензоров соответствуютправильный.Вы можете попытаться визуализировать входные и выходные данные вашего графика в Tensorboard или преобразовать в pbtxt следующим образом, а затем прочитать его:

import tensorflow as tf
path_to_pb = '...'
output_file = '...'
g = tf.GraphDef()
with open(path_to_pb, 'rb') as f:
  g.ParseFromString(f.read())
with open(output_file, 'w') as f:
  f.write(str(g))
0 голосов
/ 23 мая 2018

Вы пробовали этот аргумент --input_array = Предсказания.Вы можете попробовать использовать квантованную модель

...