2016-07-06 45 views
0

當我不使用隊列時,我喜歡在培訓時期計算損失,準確率,ppv等,並在每個時代結束時提交tf.summary。tensorflow完全連接控制流程每個n-epoch摘要

我不知道如何複製這種行爲與隊列。當一個時代完成時,我是否可以聽到一個信號?

(0.9版本)

典型的設置去如下:

queue=tf.string_input_producer(num_epochs=7) 

...#構建圖譜#...

#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塊中創建彙總。這需要在整個時期運行我的整個程序,並且不知何故它看起來並不是最有效的。

回答

-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) 
+0

凱文,我想你誤解了。那不是我如何知道張量流與隊列運行......我將編輯我的問題來說明我的意思 – user3391229

+0

當然,時代對TensorFlow來說是已知的。 'input_producer'對象甚至有'num_epoch'選項。你的意思是說,tf不是用時代思想開發的。 – TimZaman