В настоящее время я пытаюсь обучить сети классификации с использованием TensorFlow API (https://github.com/tensorflow/models).. После создания записей TFrecords для моего набора данных (сохраненных в Research / Slim / Data) я обучаю сети с помощью следующей команды:
python research/slim/train_image_classifier.py \
--train_dir=research/slim/training/current_model \
--dataset_name=my_dataset \
--dataset_split_name=train \
--dataset_dir=research/slim/data \
--model_name=vgg_16 \
--checkpoint_path=research/slim/training/vgg_16_2016_08_28/vgg_16.ckpt \
--checkpoint_exclude_scopes=vgg_16/fc7,vgg_16/fc8 \
--trainable_scopes=vgg_16/fc7,vgg_16/fc8 \
--batch_size=5 \
--log_every_n_steps=10 \
--max_number_of_steps=1000 \
Это хорошо работает для нескольких сетей классификации (Inception, ResNet, MobileNet), но не очень хорошо для VGG-Net. Я настраиваю следующую модель VGG-Net 16: http://download.tensorflow.org/models/vgg_16_2016_08_28.tar.gz
В целом, это работает для обучения этой модели, но когда я обучаю сеть, потери увеличиваются, а не уменьшаются. Возможно, это связано с моим выбором 'checkpoint_exclude_scopes'.
Правильно ли использоватьпоследний полностью связанный слой как checkpoint_exclude_scopes?
Тот же вопрос возникает при замораживании графика для параметра 'output_node_names'. Например, для InceptionV3 он работает с 'output_node_names = InceptionV3 / Predictions / Reshape_1'. Но как?чтобы установить этот параметр для VGG-Net. Я попробовал следующее:
python research/slim/freeze_graph.py
--input_graph=research/slim/training/current_model/graph.pb
--input_checkpoint=research/slim/training/current_model/model.ckpt
--input_binary=true
--output_graph=research/slim/training/current_model/frozen_inference_graph.pb
--output_node_names=vgg_16/fc8
Я не нашел ни одного слоя, содержащего «Predictions» or «Logits» в модели VGG-Net, поэтому я не уверен.
Спасибо за помощь!