Я пытаюсь создать квантованную модель мобильной сети для модели tenorflow lite, но столкнулся с ошибкой

Сначала я скачал квантованную модель из Mobilenet. Он содержится в Mobilenet_v1_1.0_224. Затем я сделал следующее

bazel-bin/tensorflow/contrib/lite/toco/toco \
> --input_files=Sample/mobilenet_v1_1.0_224/quantized_graph.pb \
> --input_format=TENSORFLOW_GRAPHDEF --output_format=TFLITE \
> --output_file=Sample/mobilenet_v1_1.0_224/quantized_graph.tflite --inference_type=QUANTIZED_UINT8 \
> --input_shape=1,224,224,3 \
> --input_array=input \
> --output_array=MobilenetV1/Predictions/Reshape_1 \
> --mean_value=128 \
> --std_value=127

Ниже приводится краткое изложение графика.

bazel-bin/tensorflow/tools/graph_transforms/summarize_graph --in_graph=Sample/mobilenet_v1_1.0_224/quantized_graph.pb
Found 1 possible inputs: (name=input, type=float(1), shape=[1,224,224,3]) 
No variables spotted.
Found 1 possible outputs: (name=MobilenetV1/Predictions/Reshape_1, op=Reshape) 
Found 4227041 (4.23M) const parameters, 0 (0) variable parameters, and 0 control_edges
Op types used: 91 Const, 27 Add, 27 Relu6, 15 Conv2D, 13 DepthwiseConv2dNative, 13 Mul, 10 Dequantize, 2 Reshape, 1 Identity, 1 Placeholder, 1 BiasAdd, 1 AvgPool, 1 Softmax, 1 Squeeze
To use with tensorflow/tools/benchmark:benchmark_model try these arguments:
bazel run tensorflow/tools/benchmark:benchmark_model -- --graph=Sample/mobilenet_v1_1.0_224/quantized_graph.pb --show_flops --input_layer=input --input_layer_type=float --input_layer_shape=1,224,224,3 --output_layer=MobilenetV1/Predictions/Reshape_1

Итак, выполнив преобразование, я столкнулся со следующей ошибкой

Спасибо за любую помощь

Я думаю, вы можете указать на старую квантованную модель мобильной сети TensorFlow.


person Liu Hantao    schedule 02.03.2018    source источник


Ответы (1)


Мы обновили квантованные модели мобильных сетей, доступные здесь . Конкретная ссылка для множителя глубины 1,0 и размера изображения 224 - this .

Эти tar-файлы также поставляются с уже преобразованной моделью плоского буфера TFLite.

Надеюсь, это поможет!

Спасибо! Интересно, какие значения должны быть переданы в конвертер TensorFlow lite? Есть ли разница от того, что мой демонстрационный код вверху?

person suharshs    schedule 19.03.2018
comment
Да, вам нужны --mean_value = 127.5 и --std_value = 127.5. Это функция предварительной обработки, используемой для изображений при обучении модели. Если вы не хотите возиться с преобразованием, вы можете использовать уже преобразованный FlatBuffer. Спасибо! - person Liu Hantao; 28.03.2018
comment
2018-03-01 23: 12: 03.353786: I tensorflow / contrib / lite / toco / import_tensorflow.cc: 1172] Преобразование неподдерживаемой операции: Dequantize 2018-03-01 23: 12: 03.354513: I tensorflow / contrib / lite / toco /import_tensorflow.cc:1172] Преобразование неподдерживаемой операции: Деквантование 2018-03-01 23: 12: 03.355177: I tensorflow / contrib / lite / toco / import_tensorflow.cc: 1172] Преобразование неподдерживаемой операции: Деквантизация 01.03.2018 23: 12: 03.355556: I tensorflow / contrib / lite / toco / import_tensorflow.cc: 1172] Преобразование неподдерживаемой операции: Dequantize 2018-03-01 23: 12: 03.355921: I tensorflow / contrib / lite / toco / import_tensorflow.cc: 1172] Преобразование неподдерживаемой операции: Dequantize 2018-03-01 23: 12: 03.356281: I tensorflow / contrib / lite / toco / import_tensorflow.cc: 1172] Преобразование неподдерживаемой операции: Dequantize 2018-03-01 23: 12: 03.356632: I tensorflow / contrib / lite / toco / import_tensorflow.cc: 1172] Преобразование неподдерживаемой операции: Dequantize 2018-03-01 23: 12: 03.357540: I tensorflow / contrib / lite /toco/import_tensorflow.cc:1172] Преобразование неподдерживаемой операции: Деквантование 2018-03-01 23: 12: 03.358776: I tensorflow / contrib / lite / toco / import_tensorflow.cc: 1172] Преобразование неподдерживаемой операции: Деквантизация 01.03.2018 23: 12: 03.360448: I tensorflow / contrib / lite / toco / import_tensorflow.cc: 1172] Преобразование неподдерживаемой операции: Dequantize 2018-03-01 23: 12: 03.366319: I tensorflow / contrib / lite / toco / graph_transformations / graph_transformations. cc: 39] Перед удалением неиспользуемых операций: 140 операторов, 232 массивов (0 квантованных) 2018-03-01 23: 12: 03.371405: I tensorflow / contrib / lite / toco / graph_transformations / graph_transformations.cc: 39] Перед общими преобразованиями графа : 140 операторов, 232 массива (0 квантованных) 2018-03-01 23: 12: 03.374916: I tensorflow / contrib / lite / toco / graph_transformations / graph_transformations.cc: 39] После общих преобразований графа пройти 1:63 оператора, 152 массива (1 квантовано) 2018-03-01 23: 12: 03.376325: I tensorflow / contrib / lite / toco / graph_transf ormations / graph_transformations.cc: 39] Перед преобразованием графа перед квантованием: 63 оператора, 152 массива (1 квантованный) 2018-03-01 23: 12: 03.377492: F tensorflow / contrib / lite / toco / tooling_util.cc: 1272] В массиве MobilenetV1 / MobilenetV1 / Conv2d_0 / Relu6, который является входом для оператора DepthwiseConv, создающего выходной массив MobilenetV1 / MobilenetV1 / Conv2d_1_depthwise / Relu6, отсутствуют минимальные / максимальные данные, необходимые для квантования. Либо настройте неквантованный выходной формат, либо измените входной график, чтобы он содержал информацию о минимуме / максимуме, либо передайте --default_ranges_min = и --default_ranges_max =, если вам не важна точность результатов. - person MMH; 18.09.2019