11

Caffeでは、セマンティックセグメンテーションのための完全畳み込みネットワークを実装しようとしています。 Caffe | solfer.prototxtの値の設定方法

は、それが依存してい

  • test_interval

    • test_iter
    • iter_size
    • max_iter:私は、次のハイパーパラメータのためのあなたの'solver.prototxt'値を設定するための具体的な戦略があると思いましてあなたの訓練のために持っているイメージの数?もしそうなら、どうですか?あなたが持っている訓練例の合計数は、してみましょう

      1.トレーニングセットサイズ:

  • +0

    もう一つのメタパラメータは 'weight_decay'です。それを設定する方法については、[this thread](http://stackoverflow.com/q/32177764/1714410)を参照してください。 – Shai

    答えて

    28

    は有意義な方法でこれらの値を設定するためには、あなたのデータに関する情報のいくつかのより多くのビットを持っている必要がありますこの量をTと呼んでください。
    2.訓練のバッチサイズトレーニングの例の数を1つのバッチで一緒に処理した場合、これは通常'train_val.prototxt'の入力データレイヤーによって設定されます。たとえば、this fileでは電車のバッチサイズは256に設定されています。この量をtbで表すことにしましょう。
    3.検証セットサイズモデルの検証のために設定したサンプルの合計数は、Vで表します。
    4.試験フェーズでは、検証バッチサイズの値がbatch_sizeに設定されています。 this exampleでは50に設定されています。これをvbとしましょう。

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

    トレーニングセット全体(「エポック」を完成させる)をカバーするには、T/tbの繰り返しが必要です。通常、1つはいくつかのエポックの列車なので、max_iter=#epochs*T/tbです。

    iter_sizeについて:これにより、いくつかのトレーニングミニバッチでの平均グラジエントが可能になります。詳しくはthis threadを参照してください。

    +2

    ありがとうございました!それは多くのものをクリアしました:) –

    +0

    @Shai - 詳細な例をありがとうございます。私は 'Caffe'と' AlexNet'の使用例のために、まだ混乱しています。私は 'ImageNet ILSVRC 2012 'からLMDBにセットされた' train'と 'val'データを使って' 115GB'のメモリを持つシステムを持っています。私は 'max_iteration = 100'を除いて、[this solver file](https://github.com/intel/caffe/blob/master/models/intel_optimized_models/alexnet/solver.prototxt)をすべてのパラメータとともに使用しています。私はなぜメモリ消費量が約10GBであるのか理解できません。 'Caffe'は完全なデータではなく画像のバッチで動作するので、それは小さくなければなりません。どのようにこの計算が行われたのか? –

    +0

    @ChetanArvindPatil列車/計算のためのモデルのパラメータとRAMの使用法を混乱させるようです。 Caffeはすべての**パラメータ** +その派生物をメモリに保存し、さらに**データ**(列車/バッチバッチ)とデリバティブ(バックプロップ用)を保存します。一部のソルバーは、パラメータごとの調整可能な学習率(たとえば、「Adam」)のために追加のストレージを必要とします。これらすべてには確かに多くのRAMが必要です。例えば、 [このスレッド](https://stackoverflow.com/q/36526959/1714410) – Shai

    関連する問題