【问题标题】:Using tensorboard with Jupyter notebooks将张量板与 Jupyter 笔记本一起使用
【发布时间】:2016-09-06 19:46:35
【问题描述】:

我正在尝试从 Jupyter 笔记本向张量板发送一些值

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

如何使它与后续运行一起工作?

【问题讨论】:

    标签: tensorflow tensorboard


    【解决方案1】:

    我通过在单元格末尾或另一个单元格中添加它来解决这个问题,以便在两次运行之间运行。

    tf.reset_default_graph()
    

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

    sess = tf.InteractiveSession()
    

    【讨论】:

    • 这行得通,谢谢!不重置图表会很棒,但它就是这样。
    • 一个主要问题是 tensorflow 不知道是否重用变量,所以另一个更丑陋的选择是在我个人不喜欢的地方添加“reuse=True”而不是 tf.reset_default_graph
    【解决方案2】:

    在运行 tensorboard 时,我在 jupyter 中遇到了另一种错误:

    InvalidArgumentError: You must feed a value for placeholder tensor...
    

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

    tf.reset_default_graph()
    

    然后重新运行图表

    【讨论】:

      【解决方案3】:

      你可以试试这个

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

      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() 也有效,因为它会删除所有节点,然后您可以再次创建它们,但这不是必需的。

      【讨论】:

        【解决方案4】:

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

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

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

        jupyter tensorboard integration

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-01-02
          • 2017-03-21
          • 2018-04-27
          • 1970-01-01
          • 1970-01-01
          • 2013-02-10
          • 1970-01-01
          • 2022-01-25
          相关资源
          最近更新 更多