Код, над которым я работаю: this .
Код использует вызов tf.session для получения графика для задач обнаружения объектов. Ссылка
Моя цель состоит в том, чтобы профилировать этот код для графических процессоров Nvidia с помощью nvtx-plugins-tf для анализа времени, затраченного на различные операции. Ссылка на документы
Библиотека плагинов обеспечивает функцию перехвата для tf.train.MonitoredSession, как указано в их примере кода здесь .
Код, связанный вышеиспользует tf.session вместе с tf.config, и когда я пытаюсь изменить вызов tf.session на вызов tf.train.MonitoredSession, я не могу заставить свой код работать, и он завершается с ошибкой, что граф не можетбыть изменены. Я просмотрел API-интерфейсы tenorflow и оказалось, что tf.session не поддерживает обратные вызовы ловушек, а tf.train.MonitoredSession не поддерживает tf_config в качестве аргумента функции.
Traceback (most recent call last):
File "/home/mayroy13/anaconda3/envs/trt-py36/lib/python3.6/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/home/mayroy13/anaconda3/envs/trt-py36/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/home/mayroy13/Mayank/Mayank/test/tensorrt/tftrt/examples/object_detection/test.py", line 105, in <module>
test(args.test_config_path)
File "/home/mayroy13/Mayank/Mayank/test/tensorrt/tftrt/examples/object_detection/test.py", line 81, in test
**test_config['benchmark_config'])
File "/home/mayroy13/Mayank/Mayank/test/tensorrt/tftrt/examples/object_detection/object_detection.py", line 608, in benchmark_model
tf.import_graph_def(frozen_graph, name='')
File "/home/mayroy13/anaconda3/envs/trt-py36/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 507, in new_func
return func(*args, **kwargs)
File "/home/mayroy13/anaconda3/envs/trt-py36/lib/python3.6/site-packages/tensorflow/python/framework/importer.py", line 443, in import_graph_def
_ProcessNewOps(graph)
File "/home/mayroy13/anaconda3/envs/trt-py36/lib/python3.6/site-packages/tensorflow/python/framework/importer.py", line 236, in _ProcessNewOps
for new_op in graph._add_new_tf_operations(compute_devices=False): # pylint: disable=protected-access
File "/home/mayroy13/anaconda3/envs/trt-py36/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 3751, in _add_new_tf_operations
for c_op in c_api_util.new_tf_operations(self)
File "/home/mayroy13/anaconda3/envs/trt-py36/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 3751, in <listcomp>
for c_op in c_api_util.new_tf_operations(self)
File "/home/mayroy13/anaconda3/envs/trt-py36/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 3640, in _create_op_from_tf_operation
self._check_not_finalized()
File "/home/mayroy13/anaconda3/envs/trt-py36/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 3225, in _check_not_finalized
raise RuntimeError("Graph is finalized and cannot be modified.")
RuntimeError: Graph is finalized and cannot be modified.
Любые указания, по которым нужно идтибудет оценено. Если в тензорном потоке есть способы использовать хуки в сочетании с tf.session, это также будет работать для меня.