2016-08-30 6 views
4

ニューラルネットワークのアンサンブルを構築して、各ネットが入力キューから入力を読み込んでその予測を出力キューに書き込み、別のクライアントがすべての入力キューに新しい入力をプッシュし、各出力キューから個々の予測をプルし、それらを集約してアンサンブルの予測を生成する。TensorFlowキューから項目をデキューするときにタイムアウトを設定することはできますか?

低速(またはクラッシュした)ニューラルネットワーククライアントに対してシステムを復元したいので、各出力キューからプルするときにタイムアウトを設定する必要があります。理想的には、アグリゲータグラフはうまく動作し、その予測を無視するだけです。

デキュータイムアウトを持つ唯一の解決策は、セッションを作成するときにoperation_timeout_in_ms設定オプションを設定することですが、これは(このセッションの)グラフのすべての操作に適用されます。非常に粒状ではありません。

他のオプションはありますか?

答えて

5

個別のtf.Session.run()コールでタイムアウトを設定できます。これは、ブロックする可能性がある場合に最も便利です(dequeue()など)。これを行うには、run()コールにオプションのtf.RunOptionsオブジェクトを渡すと、ミリ秒単位で希望タイムアウトにtimeout_in_msフィールドを設定します。

op = ... # Assume this depends on dequeuing a tensor from a queue. 
sess = tf.Session() 

# Set a 10-second timeout. 
run_options = tf.RunOptions(timeout_in_ms=10000) 
try: 
    sess.run(op, options=run_options) 
except tf.errors.DeadlineExceededError: # This will be raised if the timeout expires. 
    # ... 
+0

私が探していたものだけを、おかげで再び@mrry。 – MiniQuark

関連する問題