TensorFlow CSV导入:向Summary for TensorBoard添加功能和标签会读取两行

时间:2017-02-03 15:50:26

标签: python tensorflow

我有一个非常基本的TensorFlow应用程序来测试逐行加载CSV数据并向TensorBoard添加各种摘要和可视化。我的输入CSV文件有18行和一串列 - 第一列XX列是'要素',后续YY列是0和1代表标签。

我注意到当我为包含功能和标签的变量创建Summaries时,TensorFlow从CSV中读取两倍的行,因此在给出18行的情况下,我不会循环18次,而是只循环9.只要我删除将功能和标签添加到摘要的代码,读数恢复正常。将其他变量添加到Summary,例如Cost / etc.这是函数的输出,而不是CSV,没有这个问题。

我还不知道我是否真的需要TensorBoard中的信息,所以我可以没有它,但我更愿意尽可能多地将信息输入TensorBoard,然后决定我需要什么保持。

这是预期的行为还是我做错了什么?

String.Empty

感谢您的投入!

1 个答案:

答案 0 :(得分:1)

问题是每个session.run调用都是从队列中提取的(第一个是明确的,第二个是因为摘要操作依赖于队列数据)。如果您在同一个session.run调用中使用摘要和实际使用队列数据,而不是使用feed_dict来提供先前提取的数据,则不会丢弃任何数据。类似的东西:

examples, labels = input_pipeline(sampling_size, try_epochs)

x, y_ = examples, labels

W = tf.Variable(tf.random_normal([TS, TL], stddev=1), name='weights')
b = tf.Variable(tf.random_normal([TL], stddev=1), name='biaes')
y = tf.matmul(x, W) + b


# this one causes the issue
with tf.name_scope('Features'):
  features = examples
# this one also causes the issue
with tf.name_scope('Labels'):
  labDisp = labels
with tf.name_scope('Model'):
  myModel = tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y)
with tf.name_scope('Loss'):
  lossFn = tf.reduce_mean(myModel)
with tf.name_scope('Optimizer'):
  train_step = tf.train.AdamOptimizer(.05).minimize(lossFn)

a1 = tf.summary.histogram("Features", features)
a2 = tf.summary.histogram("Labels", labDisp)
a3 = tf.summary.histogram("Model", myModel)
a4 = tf.summary.scalar("Loss", lossFn)

merged_summary_op = tf.summary.merge([a1, a2, a3, a4])

with tf.Session() as sess:
  gInit = tf.global_variables_initializer().run()
  lInit = tf.local_variables_initializer().run()

  summary_writer = tf.summary.FileWriter(logs_path, graph=tf.get_default_graph())

  coord = tf.train.Coordinator()
  threads = tf.train.start_queue_runners(coord=coord)

  try:
    while not coord.should_stop():
      act = tf.argmax(labels, 1)
      fit = tf.argmax(y, 1)
      _, pAct, pFit, l, summary = sess.run([train_step, act, fit, lossFn,
                                            merged_summary_op])
      summary_writer.add_summary(summary, i)
      print(pAct)
      print(pFit)

  except tf.errors.OutOfRangeError:
    print('Finished')
  finally:
    coord.request_stop()
  coord.join(threads)