我正在尝试用Tensorflow编写一个脚本来训练网络。我有一些要求:
"
加载训练数据集以及验证数据集;训练数据集的FIFOqueue
设置为num_epoches
,但验证数据集的10
仅设置为num_epoches
,因为在测试中,我们只需要运行整个验证数据集一次。1
,loss
数据存储到摘要文件中,以便在Tensorboard中进行可视化。然而,
accuracy_validation
时,它实际上都会触发输入数据的出列操作,这不是我的预期。 sess.run(summary_op)
只会使用一批验证数据集来测试网络。那么如何解决这两个问题?
答案 0 :(得分:0)
MonitoredSession和SessionRunHooks可让您在运行常规培训的同时运行摘要,因此不会删除示例。
答案 1 :(得分:0)
您可以从sess运行中获取数据点并将其直接添加到摘要中,而无需运行summary_op,例如:
step, _, loss_value, cur_learning_rate = sess.run([global_step, train_op, avg_loss, lr])
...
summary = tf.Summary()
summary.value.add(tag='train/loss_values', simple_value=loss_value)
summary.value.add(tag='train/learning_rates', simple_value=cur_learning_rate)
summary_writer.add_summary(summary, step)
这样,您的summary_op将不会使用该队列。
答案 2 :(得分:0)
另一种解决方案是在训练操作的同时运行摘要操作。
_, loss_value, summary = sess.run([train_op, avg_loss, summary_op])
这样你只出列一次。