TensorFlowで実装いくつかのモデルがGithubに掲示等(resnet_main.py中)resnetとして、彼らの「評価」関数はwhileループを実行する必要があり、などテンソルフローのループでテストデータを評価するのはなぜですか?
我々は複数回の試験データを評価する必要がある理由のだろうか。
TensorFlowで実装いくつかのモデルがGithubに掲示等(resnet_main.py中)resnetとして、彼らの「評価」関数はwhileループを実行する必要があり、などテンソルフローのループでテストデータを評価するのはなぜですか?
我々は複数回の試験データを評価する必要がある理由のだろうか。
テストデータは一度評価されます:the loop is on its samples。テストデータが大きい場合、ネットワーク全体がメモリに収まらないため、全体として処理することはできません。その場合、ミニバッチで分割されます。
ミニバッチでのトレーニングとテストのループでも、根本的な理由は実際にはかなり異なっています。
EDIT
アウターループは異なる役割を有する:a new model is loaded at each iteration。これは、定期的にディスク上のトレーニングの出力を読み込んで評価する別のプロセスで評価を実行する場合に使用されます。
理論的根拠here:異なるGPUでトレーニングとテストを行うことができる環境で作業している場合に便利です。
あなたはテストデータを複数回評価しません。これらのサブセットの和集合(その全体のテストセット)の評価を得るために、テストセットの分離されたサブセットを評価する
私は同意しますが、130行目からwhileループが始まります。FLAGS.eval_onceがtrueでない限り、ループが壊れないようです。 – user131379
このコードは、そのフラグが使用されていない場合に60秒ごとにモデル化するために評価するために使用されるためです。評価は上記のバッチを使用して行われます – nessuno
データセットを分割することに同意しますが、それは130行目からwhileループ内にあります。 FLAGS.eval_onceが真でない限り、ループは壊れません。 – user131379
Re:EDIT、意味がありますが、プログラムが2ループの繰り返しの間にチェックポイントファイルの変更があるかどうかを検出する方法はわかりません。変更がなければ、プログラムは同じパラメータを持つ同じデータセットを評価しています。 – user131379
真。次に、新しいモデルが存在する可能性を最大限に引き出すために[各繰り返しの間の1分の休止](https://github.com/tensorflow/models/blob/master/resnet/resnet_main.py#L172)が選択されていると仮定します準備ができました。そうでなければ、同じ計算を2回行うことは時として大したことではないと思います。 – user1735003