2017-01-11 32 views
3

Ich habe eine Lasagne Code. Ich möchte das gleiche Netzwerk mit Caffe erstellen. Ich könnte das Netzwerk konvertieren. Aber ich brauche Hilfe mit den Hyperparametern in Lasagne. Die Hyper in Lasagne wie folgt aussehen:L2 Regularisierung in Caffe, Umwandlung von Lasagne

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 

Wie ich den L2 Regularisierung Teil in caffe führen Sie? Muss ich nach jeder Faltung/Innenproduktschicht eine Schicht zur Regularisierung hinzufügen? Relevante Teile von meinem solver.prototxt ist wie folgt:

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 

auch in http://datascience.stackexchange.com geschrieben. Warte auf Antworten.

+1

posten Sie bitte keine doppelten Fragen in mehreren Stackexchange-Sites. – Shai

+2

auf datascience gepostet, auf Antworten gewartet, keine Antwort erhalten, dann habe ich auf stackoverflow gepostet. Ich werde fortan mehrfaches Posting vermeiden. – user27665

Antwort

2

Es scheint, als ob Sie es schon richtig verstanden haben.
Die weight_decay Meta-Parameter mit regularization_type: "L2" in Ihrem 'solver.prototxt' tell caffe kombiniert L2 Regularisierung mit weight_decay = 1e-5 zu verwenden.

Eine weitere Sache, die Sie optimieren sollten, ist, wie viel Regularisierung jeden Parameter beeinflusst. Sie können dies für jeden Blob-Parameter im Netz über

param { decay_mult: 1 } 

Zum Beispiel kann eine "InnerProduct" Schicht mit Vorspannung hat zwei Parameter:

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 
} 

Standardmäßig wird decay_mult auf 1 gesetzt, dass Alle Gewichte des Netzes sind gleich regulalisiert. Sie können dies ändern, um mehr/weniger spezifische Parameter-Blobs zu regularisieren.

+0

Wissen Sie, wie Sie die maximale Normregularisierung auswählen können? Ich kann nur L1 und L2 finden Typ – user8264

+0

@ user8264 AFAIK Caffe hat noch nicht Max Norm Regularisierung. – Shai

Verwandte Themen