Как сохранить промежуточные тензоры, которые используются в течение жизненного цикла приложения, в тензорном потоке - PullRequest
0 голосов
/ 27 февраля 2020

По сути, я запускаю оценочный скрипт, предоставляемый API Tf Object Detection, используя:

python3 object_detection/legacy/eval.py \
    --pipeline_config_path=../../faster_rcnn_resnet101_voc12.pbtxt\
    --checkpoint_dir=../../trainedmodel_voc07 \
    --eval_dir=../../eval_results \
    --run_once=True \
    --alsologtostderr

Теперь этот скрипт выводит ограничивающие рамки на изображение вместе с оценочными значениями. Но мне нужно вычислить метрики.

Когда я посмотрел в eval.py, я обнаружил, что он ничего не возвращает. Он запускает оценку, вычисляет показатели, но не возвращает их. Итак, я просто изменил код, чтобы вернуть метрики и распечатать его на консоли.

metrics = evaluator.evaluate(
        create_input_dict_fn,
        model_fn,
        eval_config,
        categories,
        FLAGS.checkpoint_dir,
        FLAGS.eval_dir,
        graph_hook_fn=graph_rewriter_fn,
    )
print(metrics)

Но, как мы знаем, это не будет печатать значения внутри метри c. Я пробовал несколько вещей, таких как metrics.numpy(), которые не будут работать, когда нетерпеливое выполнение выключено. Я также пытался использовать metrics.eval(), создавая сеанс, но он просто зависает P C и ничего не делает.

Кроме того, tf.print () не будет работать, поскольку он работает в графическом режиме.

Затем я обнаружил, что TF хранит сводку метрик, и мы можем визуализировать ее с помощью тензорной доски. Ничего страшного ... но что я хотел извлечь из других тензоров?

Итак, в принципе, как я могу получить доступ к промежуточным тензорам в скрипте?

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