【问题标题】:Tensorboard doesn't show runtime/memory for all operationsTensorboard 不显示所有操作的运行时/内存
【发布时间】:2018-04-06 13:07:41
【问题描述】:

我有一个在 TensorFlow 中实现的网络,它需要很长时间来训练,因此我想对其进行分析以查看哪些部分导致运行时间过长。

为此,我按照说明here 捕获运行时和内存信息。我的代码如下所示:

// define network
loss = ...
train_op = tf.train.AdamOptimizer().minimize(loss, global_step=global_step)

// run forward and backward prop for one batch
run_metadata = tf.RunMetadata()
options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
_,loss,sum = sess.run([train_op,loss,sum], feed_dict=fd, options=options, run_metadata=run_metadata)
writer.add_run_metadata(run_metadata, 'step_%d' % step)

然后我可以在 TensorBoard 中看到“会话运行”。但是,一旦我加载会话运行,图表中的大多数操作就会变成橙色,如下所示,并且没有可用的运行时或内存信息:

根据传说,这些操作是“未使用的”。但事实并非如此,因为除了“损失”和“选择”之外的几乎所有内容都是这样显示的。显然,必须使用整个网络来计算损失。所以我真的不明白为什么图表会这样显示。

我在 Tesla K40c 上使用 TF 1.3。

【问题讨论】:

    标签: tensorflow runtime profiling tensorboard


    【解决方案1】:

    我曾经遇到过和你一样的问题,Tensorboard 在我的会话运行中没有注册任何东西,除了渐变和优化器操作。

    我通过将我的 Tensorflow 版本升级到 1.4 版本来修复它。

    【讨论】:

    • 好的,我明天试试,看看有没有用。
    【解决方案2】:

    不确定。 尝试添加这一行

    writer.add_summary(_, step)
    

    之后

    writer.add_run_metadata...
    

    【讨论】:

    • 为什么要传递 _ 给 add_summary 函数?这还有效吗?
    • _,loss,sum = sess.run([train_op,loss,sum], feed_dict=fd, options=options, run_metadata=run_metadata) # from this: _ contains sess.run(train_op, ..)
    猜你喜欢
    • 2017-09-27
    • 2016-07-10
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多