Tensorflow: Не удалось сохранить контрольную точку после каждых 2 глобальных шагов во время обучения модели SSD для обнаружения объектов.

Вопрос или проблема

python models/object_detection/train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/ssd_inception_v2_coco.config

INFO:tensorflow:Восстановление параметров из /home/rahul/Downloads/ssd_inception_v2_coco_2018_01_28/model.ckpt
INFO:tensorflow:Запуск local_init_op.
INFO:tensorflow:Завершен запуск local_init_op.
INFO:tensorflow:Начало сессии.
INFO:tensorflow:Сохранение контрольной точки в путь training/model.ckpt
INFO:tensorflow:Начало очередей.
INFO:tensorflow:global_step/sec: 0
INFO:tensorflow:Запись сводки на шаге 0.
INFO:tensorflow:глобальный шаг 1: потеря = 14.1708 (73.929 сек/шаг)
INFO:tensorflow:глобальный шаг 2: потеря = 13.3957 (26.779 сек/шаг)
INFO:tensorflow:global_step/sec: 0.0207936
INFO:tensorflow:Запись сводки на шаге 2.
INFO:tensorflow:глобальный шаг 3: потеря = 13.2996 (34.331 сек/шаг)
INFO:tensorflow:глобальный шаг 4: потеря = 12.6129 (27.737 сек/шаг)
INFO:tensorflow:глобальный шаг 5: потеря = 12.0835 (28.638 сек/шаг)
INFO:tensorflow:глобальный шаг 6: потеря = 11.9736 (29.535 сек/шаг)
INFO:tensorflow:global_step/sec: 0.0333812
INFO:tensorflow:Запись сводки на шаге 6.
INFO:tensorflow:глобальный шаг 7: потеря = 11.3325 (35.411 сек/шаг)
INFO:tensorflow:глобальный шаг 8: потеря = 10.9632 (28.500 сек/шаг)
INFO:tensorflow:глобальный шаг 9: потеря = 10.8758 (27.419 сек/шаг)
INFO:tensorflow:глобальный шаг 10: потеря = 11.1301 (25.544 сек/шаг)
INFO:tensorflow:Остановка обучения.
INFO:tensorflow:Обучение завершено! Сохранение модели на диск.
rahul@rahul-pc:~/crack_detection_ssd_inception$

В приведенном выше коде контрольная точка сохраняется на $0^{th}$ и $10^{th}$ этапе, но я хотел бы сохранять контрольную точку после каждых 2 глобальных шагов, для чего я повторно обучил свою модель только на 10 num_steps (это только для тестирования).
Где мы можем изменить сохранение контрольной точки?

Я пытался изменить save_checkpoints_steps, save_checkpoints_secs в object_detection/model_main.py и object_detection/model_lib_test.py

Используйте класс saver:

saver = tf.train.Saver()
with tf.Session() as sess:
    # Запустите свои операции здесь с sess.run()
    saver.save(sess, 'my-model', global_step=2)

Это создаст файлы контрольных точек с префиксом my-model на каждом 2-м временном шаге.

Ссылка: https://www.tensorflow.org/guide/saved_model

Ответ или решение

Для решения проблемы с сохранением контрольных точек (checkpoints) модели SSD (Single Shot Multibox Detector) для обнаружения объектов в TensorFlow, важно правильно настроить параметры сохранения контрольных точек в конфигурации вашего обучения. В данном случае вы хотите сохранить контрольные точки каждые 2 глобальных шага, однако, судя по вашей информации, они сохраняются только на 0 и 10 шаге.

Настройка сохранения контрольных точек

  1. Файл конфигурации:

    Первым делом убедитесь, что вы находитесь в правильном файле конфигурации вашего пайплайна (pipeline config file). Откройте файл ssd_inception_v2_coco.config, который вы указали в качестве pipeline_config_path. Найдите секцию, связанную с настройками сохранения контрольных точек.

    В этой секции вы должны убедиться, что у вас выставлены такие параметры, как save_checkpoints_steps или save_checkpoints_secs. Вот пример:

    train_config {
       ...
       save_checkpoints_steps: 2
       ...
    }
  2. Использование model_main.py:

    Если вы хотите изменять код непосредственно, откройте файл model_main.py. В нем вы увидите настройку для сохранения контрольных точек, где вы можете указать шаг для сохранения:

    tf.contrib.training.HParams(save_checkpoints_steps=2)
  3. Параметры в model_lib_test.py:

    Если вы изменяете model_lib_test.py, то изменения, которые вы внесли, должны также учитывать новые параметры сохранения. Обратите внимание на равенство или настройки, которые могут перезаписывать ваши желания.

Использование tf.train.Saver

Чтобы обеспечить более гибкое управление процессом сохранения, вы можете использовать класс tf.train.Saver. Экземпляр этого класса можно создать и настроить на сохранение контрольных точек по определенному количеству шагов:

saver = tf.train.Saver()
with tf.Session() as sess:
    for step in range(num_steps):  # предполагаем, что num_steps равен 10 в вашем случае
        # Выполнение необходимых вычислений
        ...
        if step % 2 == 0:  # Сохранять каждые 2 шага
            saver.save(sess, 'my-model', global_step=step)

Это позволит вам более свободно управлять процессом сохранения модели.

Заключение

Таким образом, правильно скорректировав параметры в конфигурационном файле и возможно дополнительно настроив использование tf.train.Saver, вы сможете сохранить контрольные точки вашей модели каждые 2 глобальных шага. Не забудьте проверить логи на наличие ошибок и удостовериться, что ваша модель обучается корректно и сохраняет все необходимые контрольные точки.

Если после настройки у вас все еще возникают проблемы, пожалуйста, внимательно проверьте журналы (logs) о состоянии обучения и ошибки, которые могут помочь быстро выявить и исправить проблему.

Оцените материал
Добавить комментарий

Капча загружается...