14

Caffe では、セマンティック セグメンテーションのために完全畳み込みネットワークを実装しようとしています。'solver.prototxt'次のハイパーパラメータの値を設定するための特定の戦略があるのだろうかと思っていました:

  • test_iter
  • テスト間隔
  • iter_size
  • max_iter

トレーニング セット用の画像の数に依存しますか? もしそうなら、どのように?

4

1 に答える 1

30

これらの値を意味のある方法で設定するには、データに関するいくつかの情報が必要です。

1. トレーニング セットのサイズは、トレーニング サンプルの総数です。この量を と呼びましょうT
2. トレーニング バッチ サイズは、1 つのバッチで一緒に処理されるトレーニング サンプルの数です。通常、これは の入力データ レイヤーによって設定されます'train_val.prototxt'。たとえば、このファイルでは、トレーニング バッチ サイズが 256 に設定されています。この量を で表しましょうtb
3. 検証セットのサイズモデルを検証するために取っておいた例の総数です。これを で表しましょうV
4.batch_size TEST フェーズに設定された検証バッチ サイズの値。このでは 50 に設定されています。これを と呼びましょうvb

ここで、トレーニング中に、ネットのパフォーマンスの偏りのない推定値を時々取得したいと考えています。これを行うには、test_iter反復用の検証セットでネットを実行します。検証セット全体をカバーするには、test_iter = V/vb.
どのくらいの頻度でこの見積もりを取得しますか? それは本当にあなた次第です。検証セットが非常に大きく、ネットが遅い場合、検証の頻度が高すぎると、トレーニング プロセスが長くなりすぎます。一方、十分な頻度で検証しないと、トレーニング プロセスが収束に失敗したかどうか、いつ収束に失敗したかがわからない可能性があります。test_interval検証する頻度を決定します。通常、大規模なネットの場合test_intervalは 5K のオーダーで設定し、小さくて高速なネットの場合は、より低い値を選択できます。繰り返しますが、すべてあなた次第です。

T/tbトレーニング セット全体をカバーする (「エポック」を完了する) には、反復を実行する必要があります。通常、1 つは複数のエポックのトレーニングを行うため、max_iter=#epochs*T/tb.

に関してiter_size:これにより、いくつかのトレーニングミニバッチで勾配を平均化できます。詳細については、このスレッドを参照してください。

于 2015-11-18T17:33:18.100 に答える