2016-06-30 5 views
1

私はTensorFlowのcifar10の例を実行しています。しかし、評価には問題があります。TensorFlow - すべてのテストセットをすべての例で1回だけ評価する方法

私はテストセットを持っていますので、すべてのサンプルを1回だけ評価したいと思います。しかし、コード(line 121)は、そのことを保証できないキュー(line 126)からしか取得できません。また、入力は「.tfrecords」ファイルであるという変更を加えました。提案はありますか?

ありがとうございます。

+0

問題はこの[1]と似ているようです(http://stackoverflow.com/questions/35674073/compute-status-not-found-tensor-name-input-producer-limit-epochs-epochs-not) )しかし、私は最終的にどのようにそれを解決するのか分からない。どんな助けもありがとう。 – Tengerye

答えて

1

ファイル名hereのキューを作成する関数tf.train.string_input_producerは、引数num_epochsを受け入れることができます。 1エポックだけ実行するように指定することができます。

# Create a queue that produces the filenames to read. 
filename_queue = tf.train.string_input_producer(filenames, num_epochs=1) 
+0

その背後には問題があります。トレーニングは1つ以上の例を取らなければなりません。モデルをロードすると、TensorFlowは次のエラーで間違って実行されます。 'テンソル名" input_producer/limit_epochs/epochs "がチェックポイントファイルに見つかりませんでした。 – Tengerye

0

私は解決策を見つけましたが、むしろ不完全です。手掛かりは、ロードする変数からそれを除外し、limit_epochsを自分で初期化します。詳細な手順は次のとおりです。

del variables_to_restore['input_producer/limit_epochs/epochs']variables_to_restore = variable_averages.variables_to_restore()の後にコードを追加します。そして、モデルにinput_producer/limit_epochsのロードを停止します。

次に、この変数をアクティブにするセッションにコードsess.run(tf.initialize_variables([v for v in tf.all_variables() if v.name.startswith("input_producer")]))を追加します。

最後に、操作filename_queue = tf.train.string_input_producer(filenames, num_epochs=1)を実行してください。

スレッドをシャットダウンする前にファイルを保存してください。

不完全な点は、任意のテスト例に適合したい場合は、すべてのスレッドを1つの例のみにする必要があることです。

関連する問題