当我不使用队列时,我喜欢统计训练期间的损失、准确率、ppv等,并在每个时期结束时提交tf.summary。
我不确定如何在队列中复制这种行为。当一个时期完成时,有没有我可以听到的信号?
(0.9版)
典型的设置如下:
queue=tf.string_input_producer(num_epochs=7)...#build graph#...
#training
try:
while not coord.should_stop():
sess.run(train_op)
except:
#file has been read num_epoch times
#do some stuff.. maybe summaries
coord.request_stop()
finally:
coord.join(threads)因此,很明显,我可以只设置num_epoch=1并在except块中创建摘要。这将需要我的整个程序在每个时期运行一次,但不知何故,它似乎不是最有效的。
发布于 2016-07-07 03:46:20
编辑已更改,以说明对问题的编辑。
纪元不是TensorFlow内置的或“已知”的东西。您必须跟踪训练循环中的纪元,并在纪元结束时运行汇总操作。如下所示的伪代码应该可以工作:
num_mini_batches_in_epoch = ... # something like examples_in_file / mini_batch_size
try:
while True:
for i in num_mini_batches_in_epoch:
if coord.should_stop(): raise Exception()
sess.run(train_op)
sess.run([loss_summary, accuracy_summary])
except:
#file has been read num_epoch times
#do some stuff.. maybe summaries
coord.request_stop()
finally:
coord.join(threads)https://stackoverflow.com/questions/38232417
复制相似问题