将 tensorboard 与 Jupyter notebooks 结合使用

Using tensorboard with Jupyter notebooks

我正在尝试从 Jupyter notebook 向 tensorboard 发送一些值

with tf.Session() as sess:
    param = tf.Variable(0.1)
    param_summary = tf.scalar_summary("param", param)
    merge_op = tf.merge_all_summaries()
    writer = tf.train.SummaryWriter("/tmp/tflogs/test_tb", sess.graph)

    init = tf.initialize_all_variables()
    sess.run(init)

    for i in range(10):
        ass = tf.assign(param, i*0.5)
        sess.run(ass)
        mo = sess.run(merge_op) # Fails with "Duplicate tag param found in summary inputs" message
        writer.add_summary(mo,i)
        writer.flush()

问题是它在第一个 运行 和 InvalidArgumentError: Duplicate tag param found in summary inputs 消息之后失败(此处全文:http://pastebin.com/dTBdCkHc

如何让它与后续的 运行 一起使用?

我通过在单元格末尾或另一个单元格中添加它来解决这个问题,使其成为 运行 之间的 运行。

tf.reset_default_graph()

您可以尝试的另一件事是使用

sess = tf.InteractiveSession()

当 运行ning tensorboard:

时,我在 jupyter 中遇到了另一种错误
InvalidArgumentError: You must feed a value for placeholder tensor...

但这已通过与上述相同的方法解决 - 首先 运行 在一个单元格上:

tf.reset_default_graph()

然后重新运行 图表

你可以试试这个

第一个单元格,只有 运行 一次。这是您创建图表的地方。

sess = tf.Session()
param = tf.Variable(0.1)
param_summary = tf.scalar_summary("param", param)
merge_op = tf.merge_all_summaries()
writer = tf.train.SummaryWriter("/tmp/tflogs/test_tb", sess.graph)

第二个单元格,运行 次数不限。这是您初始化和 运行 您的图形的地方(您也不能每次都 运行 初始化操作)。除非你使用新的编写器,否则你每次都会将摘要写入同一个 tensorboard 文件。

init = tf.global_variables_initializer() #tf.initialize_all_variables() is deprecated
sess.run(init)

for i in range(10):
    ass = tf.assign(param, i*0.5)
    sess.run(ass)
    mo = sess.run(merge_op) # Fails with "Duplicate tag param found in summary inputs" message
    writer.add_summary(mo,i)
    writer.flush()

发生的情况是,每次调用您的单元格时,您都会向图表中添加一个新变量和摘要,重复摘要的名称,从而导致错误。 tf.reset_default_graph() 也有效,因为它会删除所有节点,然后您可以重新创建它们,但这不是必需的。

我为 tensorboard 集成编写了一个 Jupyter 扩展。它可以:

  1. 只需在 Jupyter 中单击一个按钮即可启动 tensorboard
  2. 管理多个张量板实例。
  3. 与 Jupyter 界面无缝集成。

Github: https://github.com/lspvic/jupyter_tensorboard

jupyter tensorboard integration