私はTensorFlowのcifar10の例を実行しています。しかし、評価には問題があります。TensorFlow - すべてのテストセットをすべての例で1回だけ評価する方法
私はテストセットを持っていますので、すべてのサンプルを1回だけ評価したいと思います。しかし、コード(line 121)は、そのことを保証できないキュー(line 126)からしか取得できません。また、入力は「.tfrecords」ファイルであるという変更を加えました。提案はありますか?
ありがとうございます。
私はTensorFlowのcifar10の例を実行しています。しかし、評価には問題があります。TensorFlow - すべてのテストセットをすべての例で1回だけ評価する方法
私はテストセットを持っていますので、すべてのサンプルを1回だけ評価したいと思います。しかし、コード(line 121)は、そのことを保証できないキュー(line 126)からしか取得できません。また、入力は「.tfrecords」ファイルであるという変更を加えました。提案はありますか?
ありがとうございます。
ファイル名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)
その背後には問題があります。トレーニングは1つ以上の例を取らなければなりません。モデルをロードすると、TensorFlowは次のエラーで間違って実行されます。 'テンソル名" input_producer/limit_epochs/epochs "がチェックポイントファイルに見つかりませんでした。 – Tengerye
私は解決策を見つけましたが、むしろ不完全です。手掛かりは、ロードする変数からそれを除外し、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つの例のみにする必要があることです。
問題はこの[1]と似ているようです(http://stackoverflow.com/questions/35674073/compute-status-not-found-tensor-name-input-producer-limit-epochs-epochs-not) )しかし、私は最終的にどのようにそれを解決するのか分からない。どんな助けもありがとう。 – Tengerye