当我不使用队列时,我喜欢在训练的时代记录丢失,准确性,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块中创建摘要。这需要在每个时期运行我的整个程序一次,并且它似乎不是最有效的。
答案 0 :(得分:-1)
编辑已更改为对问题进行修改的帐号。
时代不是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)