Я нашел ответ здесь .
На самом деле, вы можете включить экспорт графиков в v2. Вам нужно будет позвонить tf.summary.trace_on()
перед кодом, для которого вы хотите отследить график (например, L224, если вы просто хотите шаг поезда), а затем позвонить tf.summary.trace_off()
после завершения кода. Поскольку вам нужна только одна трассировка графика, я бы рекомендовал обернуть эти вызовы if
global_step_val == 0:
, чтобы вы не создавали трассы на каждом шаге.
На самом деле, для создания графика необходимо делайте трассировку только один раз, и нет смысла делать это в каждую эпоху. Решение состоит в том, чтобы просто проверить перед вызовом трассировки один раз:
for epoch in range(epochs):
if epoch == 0:
tf.summary.trace_on(graph=True, profiler=True)
z = train_step(x, y)
if epoch == 0:
with writer.as_default():
tf.summary.trace_export(name="train_graph", step=0, profiler_outdir=logdir)
Мне лично больше нравится этот декоратор идея:
def run_once(f):
def wrapper(*args, **kwargs):
if not wrapper.has_run:
wrapper.has_run = True
return f(*args, **kwargs)
wrapper.has_run = False
return wrapper
@run_once
def _start_graph_tensorflow(self):
tf.summary.trace_on(graph=True, profiler=True) # https://www.tensorflow.org/tensorboard/graphs
@run_once
def _end_graph_tensorflow(self):
with self.graph_writer.as_default():
tf.summary.trace_export(name="graph", step=0, profiler_outdir=self.graph_writer_logdir)
for epoch in range(epochs):
_start_graph_tensorflow()
z = train_step(x, y)
_end_graph_tensorflow()