2017-01-11 38 views
3

私はラセーガンコードを持っています。私はcaffeを使って同じネットワークを作りたいと思っています。私はネットワークを変換することができます。しかし、私はlasagneのhyperparametersの助けが必要です。ラザニアのハイパーパラメータは次のようになります。caffeのL2正則化、ラザニアからの変換

lr = 1e-2 
weight_decay = 1e-5 

prediction = lasagne.layers.get_output(net['out']) 
loss = T.mean(lasagne.objectives.squared_error(prediction, target_var)) 

weightsl2 = lasagne.regularization.regularize_network_params(net['out'], lasagne.regularization.l2) 
loss += weight_decay * weightsl2 

私はどのようにしてcaffeでL2正則化部分を実行しますか?各畳み込み/内積層の後に正則化のために任意の層を追加する必要がありますか?私solver.prototxtから関連部分を以下のようにされています。また、http://datascience.stackexchange.comに掲載さ

base_lr: 0.01 
lr_policy: "fixed" 
weight_decay: 0.00001 
regularization_type: "L2" 
stepsize: 300 
gamma: 0.1 
max_iter: 2000 
momentum: 0.9 

。答えを待っています。

+1

複数のスタック交換サイトに重複した質問を投稿しないでください。 – Shai

+2

がdatascienceに投稿され、答えを待っていた、返信を得て、その後私はstackoverflowに投稿しました。私は以後複数の投稿を避ける。 – user27665

答えて

2

あなたは既に正しいと思われます。
weight_decayメタパラメータとregularization_type: "L2"を組み合わせて'solver.prototxt'weight_decay = 1e-5で正規化を使用するように指示します。

調整する必要があるもう1つのことは、各パラメータに正規化がどれほど影響するかです。あなたが例えば

param { decay_mult: 1 } 

を経由してネットに各パラメータブロブのために、この を設定することができ、バイアスと"InnerProduct"層は、二つのパラメータがあります。デフォルトでは
layer { 
    type: "InnerProduct" 
    name: "fc1" 
    # bottom and top here 
    inner_product_param { 
    bias_term: true 
    # ... other params 
    } 
    param { decay_mult: 1 } # for weights use regularization 
    param { decay_mult: 0 } # do not regularize the bias 
} 

を、decay_multは1に設定され、そのネットのすべての重みは同じに正規化されています。それを変更して、より多くの/より少ない特定のパラメータブロブを正規化することができます。

+0

最大ノルム正則化を選択する方法をご存知ですか?私はちょうどL1とL2のタイプを見つけることができます – user8264

+0

@ user8264 AFAIK Caffeはまだ最大規範正則化を持っていません。 – Shai

関連する問題