Как избавиться от дополнительных операций, добавленных в график, при тонкой настройке модели Tensorflow Inception_V3?
Я пытаюсь преобразовать тонко настроенную модель тензорного потока inception_v3 в формат uff, который можно запустить на Jetson TX2 от NVIDIA. Для преобразования в uff некоторые операции поддерживаются, некоторые - нет. Я могу успешно заморозить и преобразовать в модель uff inception_v3 с контрольной точкой imagenet, предоставленной tenorflow. Однако, если я настрою модель, в новый график будут добавлены дополнительные операции, такие как Floor, RandomUniform и т. Д., Которые еще не поддерживаются. Эти слои остаются даже после замораживания модели. Это происходит в тонкой настройке для образца цветов, также представленного на сайте tenorflow.
- Я хочу понять, почему на графике добавляются дополнительные операции, в то время как тонкая настройка просто должна модифицировать последний слой, чтобы соответствовать количеству требуемых выходных данных.
- Если они добавляются во время тренировки, как я могу от них избавиться? Какие этапы постобработки команда tenorflow выполнила перед выпуском модели inception_v3 для imagenet?
Я могу поделиться файлами pbtxt, если это необходимо. На данный момент детали слоев модели загружены по адресу https://github.com/shrutim90/TF_to_UFF_Issue. Я использую Tensorflow 1.6 с графическим процессором.
Я следую инструкциям по замораживанию или точной настройке модели с: https://github.com/tensorflow/models/tree/master/research/slim. Как описано в приведенной выше ссылке, чтобы воспроизвести проблему, установите библиотеку моделей изображений TF-Slim и выполните следующие действия:
1. python export_inference_graph.py \
--alsologtostderr \
--model_name=inception_v3 \
--output_file=/tmp/inception_v3_inf_graph.pb
2. python freeze_graph.py \
--input_graph=/tmp/inception_v3_inf_graph.pb \
--input_checkpoint=/tmp/checkpoints/inception_v3.ckpt \
--input_binary=true --output_graph=/tmp/frozen_inception_v3.pb \
--output_node_names=InceptionV3/Predictions/Reshape_1
3. DATASET_DIR=/tmp/flowers
TRAIN_DIR=/tmp/flowers-models/inception_v3
CHECKPOINT_PATH=/tmp/my_checkpoints/inception_v3.ckpt
python train_image_classifier.py --train_dir=$TRAIN_DIR --dataset_dir=$DATASET_DIR --dataset_name=flowers --dataset_split_name=train --model_name=inception_v3 --checkpoint_path=${CHECKPOINT_PATH} --checkpoint_exclude_scopes=InceptionV3/Logits,InceptionV3/AuxLogits --trainable_scopes=InceptionV3/Logits,InceptionV3/AuxLogits
4. python freeze_graph.py \
--input_graph=/tmp/graph.pbtxt \
--input_checkpoint=/tmp/checkpoints/model.ckpt-2539 \
--input_binary=false --output_graph=/tmp/frozen_inception_v3_flowers.pb \
--output_node_names=InceptionV3/Predictions/Reshape_1
Чтобы проверить слои, вы можете проверить файл.pbtxt или использовать утилиту конвертирования в uff от NVIDIA.
1 ответ
Запустите обучающий скрипт -> export_inference_graph -> freeze_graph . Это избавляет от всех лишних узлов, и модель может быть легко преобразована в UFF.