Каким должно быть "input_tensor_name" во время преобразования модели из замороженного графа в модель tflite?
Я обучил модель семантической сегментации на собственном наборе данных, используя скрипты Python, доступные на официальной странице Deeplab на Github. И обучение, и тестирование прошли хорошо.
Затем я экспортировал свою модель в замороженный график с помощью export_model.py с помощью этой команды:
python3 export_model.py \
--model_variant="xception_65" \
--crop_size=354 \
--crop_size=354 \
--atrous_rates=6 \
--atrous_rates=12 \
--atrous_rates=18 \
--output_stride=16 \
--checkpoint_path=model.ckpt-1000 \
--export_path=frozen_inference_graph_354X354.pb
Это тоже получится. Теперь я хочу преобразовать мой замороженный график в tflite с помощью convert_to_tflite.py. Этот скрипт имеет 2 входных параметра, которые я не понимаю: "input_tensor_name" и "output_tensor_name". Должен ли я оставить значение по умолчанию "ArgMax:0" для "output_tensor_name". Каким должно быть значениеinput_tensor_name?
python3 convert_to_tflite.py \
--quantized_graph_def_path=frozen_inference_graph_354X354.pb \
--output_tflite_path=model.tflite \
--input_tensor_name="?" \
--output_tensor_name="?"
Я не смог найти никакой документации по этому поводу. Заранее спасибо!
0 ответов
Вам нужно взглянуть на документацию, в частности, на документ quantize markdown.
В этом документе вы можете найти действующий
--input_tensor_name=MobilenetV2/MobilenetV2/input:0
Вам необходимо обучить модель, поддерживающую квантование, используя одну из стратегий, показанных в документе, повозившись с параметром
--quantize_delay_step
Для обучения вам, вероятно, понадобится как минимум tenorflow==1.15.3. См. Эту проблему
Если вы сделаете все вышеперечисленное, ваш замороженный график будет иметь допустимый входной тензор с указанным именем. Вы можете проверить это, выполнив поиск по конкретному имени узла с помощью Netron. Наконец, создайте модель tflite, используя
convert_to_tflite.py
сценарий