Как я настраиваю MobilenetV1 с моим собственным набором данных
Примечание: я думаю, что понимаю шаги по тонкой настройке модели, я просто не знаю, какие именно параметры следует использовать для запуска этих сценариев (недостаток знаний в самой модели, см. Выделенные части).
Я пытаюсь настроить mobilenetv1_1.0_224 с помощью набора данных Oxford IIIT Pet, существующего файла контрольных точек, уже обученного с классами ImageNet 1000, и я хочу добавить еще 37 классов (25 собак, 12 кошек) для создания модели 1037 классов.
Вот скрипт, который я использовал для тонкой настройки модели:
(tensorflow) ubuntu@haoxi911:~/tensorflow/models/research/slim$
python train_image_classifier.py
--train_dir=/tmp/oxford-iiit-pet/mobile_v1_1.0_224_finetune
--dataset_dir=/tmp/oxford-iiit-pet
--dataset_name=oxford_iiit_pets
--dataset_split_name=train
--model_name=mobilenet_v1
--checkpoint_path=/tmp/mobilenet_v1_1.0_224/mobilenet_v1_1.0_224.ckpt
--checkpoint_exclude_scopes=MobilenetV1/Logits/Conv2d_1c_1x1/weights,MobilenetV1/Logits/Conv2d_1c_1x1/biases
--trainable_scopes=MobilenetV1/Logits/Conv2d_1c_1x1/weights,MobilenetV1/Logits/Conv2d_1c_1x1/biases
--clone_on_cpu=True
Вот скрипт, который я использовал, чтобы заморозить график:
(tensorflow) ubuntu@haoxi911:~/tensorflow/tensorflow/tensorflow/python/tools$
python freeze_graph.py
--input_graph=/tmp/mobilenet_v1_1.0_224/unfrozen_graph.pb
--input_checkpoint=/tmp/oxford-iiit-pet/mobile_v1_1.0_224_finetune/model.ckpt-0
--input_binary=true
--output_graph=/tmp/oxford-iiit-pet/mobile_v1_1.0_224_finetune/frozen_graph.pb
--output_node_names=MobilenetV1/Predictions/Reshape_1
Вот ошибка, с которой я столкнулся при замораживании графика:
InvalidArgumentError: Assign requires shapes of both tensors to match.
lhs shape= [1,1,1024,1001] rhs shape= [1,1,1024,37]
[[Node: save/Assign_136 = Assign[T=DT_FLOAT, _class=
["loc:@MobilenetV1/Logits/Conv2d_1c_1x1/weights"], use_locking=true, validate_shape=true,
_device="/job:localhost/replica:0/task:0/device:CPU:0"]
(MobilenetV1/Logits/Conv2d_1c_1x1/weights, save/RestoreV2_136)]]
Я считаю, что проблема в --checkpoint_exclude_scopes
а также --trainable_scopes
, Из документа TensorFlow эти параметры должны быть установлены в InceptionV3/Logits,InceptionV3/AuxLogits
для InceptionV3, так что насчет MobilenetV1?