API обнаружения объектов Tensorflow: как отключить загрузку с контрольной точки - PullRequest
0 голосов
/ 26 октября 2018

Я создал собственный вариант архитектуры экстрактора функций MobileNetV2, изменив expansion_size с 6 на 4 в research/slim/nets/mobilenet/mobilenet_v2.py из tensorflow/models репо.

Я хочу иметь возможность обучить модель SSD + Mobilenet_v2 (с этим изменением) сценарием model_main.py, как описано в руководстве running_locally API обнаружения объектов .

Когда я это делаю, я вижу следующую ошибку, которая имеет смысл:

`InvalidArgumentError (see above for traceback): Restoring from checkpoint failed. This is most likely due to a mismatch between the current graph and the graph from the checkpoint. Please ensure that you have not altered the graph expected based on the checkpoint.

Для решения этой проблемы:

  1. Я удалил спецификацию finetune_checkpoint из моего pipeline.config.
  2. Я изменил load_pretrained=True на load_pretrained=False в object_detection/model_hparams.py.
  3. Я добавил --hparams_overrides='load_pretrained=false' в качестве входного аргумента командной строки для model_main.py.

Несмотря на это, я все еще вижу ту же ошибку.

Почему тензор потока все еще пытается восстановить контрольную точку. Как я могу заставить это не делать это?

1 Ответ

0 голосов
/ 26 октября 2018

Нашел решение сам. Оказывается, что даже если я принял меры, чтобы он не восстанавливал контрольную точку из моего файла конфигурации конвейера, оказывается, что внутренний объект tf.Estimator все еще может использовать контрольную точку из указанного model_dir; даже если основное использование model_dir используется в качестве выходного каталога, куда записываются выходные контрольные точки.

Я нашел эту информацию в официальной документации для tf.Estimator . Вот соответствующая выдержка для справки:

`model_dir: каталог для сохранения параметров модели, графика и т. Д. Это также можно использовать для загрузки контрольных точек из каталога в оценщик для продолжения обучения ранее сохраненной модели . Если объект PathLike, путь будет разрешен. Если None, model_dir в config будет использоваться, если установлен. Если оба установлены, они должны быть одинаковыми. Если оба значения отсутствуют, будет использоваться временный каталог.

У меня был старый контрольно-пропускной пункт в моем оригинальном model_dir, который был архитектурно несовместим с моей пользовательской моделью. Следовательно, я видел ошибку. Чтобы решить эту проблему, я просто изменил свой model_dir, чтобы он указывал на новый пустой каталог, и он работал. Я надеюсь, что это помогает кому-то с подобной проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...