我想使用tensorflow 2在张量板上显示我的网络图。我遵循了this教程,并且编写了如下代码:
for epoch in range(epochs):
# Bracket the function call with
# tf.summary.trace_on() and tf.summary.trace_export().
tf.summary.trace_on(graph=True, profiler=True)
# Call only one tf.function when tracing.
z = train_step(x, y)
with writer.as_default():
tf.summary.trace_export(name="train_graph", step=0, profiler_outdir=logdir)
[这样做时,我多次收到消息Profiler session started.
。当然,当我打开张量板时,Graph表示发生了错误,无法显示任何内容。
实际上,您可以在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)
我个人不喜欢这种实现。也许使用decorator将是一个更好的主意,但我认为那是另一个话题。