2016-07-06 4 views
0

キューを使用しないときは、訓練のエポック中に損失、精度、ppvなどを集計し、各エポックの最後にtf.summaryを送信するのが好きです。テンソルフローはnエポックごとの完全な制御フロー

この動作をキューで再現する方法がわかりません。エポックが完成したときに私が聞くことができるシグナルはありますか?

(バージョン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

EDIT質問の編集のために変更されました。

エポックは、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

Keveman、私はあなたが誤解していると思います。キューと一緒にテンソルフローを実行する方法はわかりません...私の質問を編集して私が意味することを説明します – user3391229

+0

もちろん、エポックはTensorFlowに知られています。 'input_producer'オブジェクトには' num_epoch'オプションがあります。あなたが言うことは、tfがエポックを考慮して開発されていないということです。 – TimZaman

関連する問題