2

J'ai un réseau. Dans un endroit, je veux utiliser concat. Comme sur cette image. pictureCaffe, définition de pondérations personnalisées dans la couche

Malheureusement, le réseau ne s'entraîne pas. Pour comprendre pourquoi je veux changer les poids en concat. Cela signifie que toutes les valeurs de FC4096 obtiendront 1 et toutes les valeurs de FC16000 obtiendront 0 au début.

Je sais que FC4096 me donnera 57% de précision, donc avec le taux d'apprentissage 10^-6, je comprendrai pourquoi les couches de concaténation n'ont pas appris.

La question est, comment puis-je définir toutes les valeurs de FC4096 à 1 et toutes les valeurs de FC16000 à 0?

+0

En poids, voulez-vous dire, chaque valeur provenant FC16000 sera _multiplied_ par 1 ou _SET_ à 1? – GoodDeeds

+0

@ GoodDeeds Désolé, je n'étais pas clair. Je voulais définir des poids à 1 ou 0. Et la réponse de Shai résout mon problème. –

Répondre

3

Vous pouvez ajouter une couche "Scale" au-dessus de FC16000 et init à 0:

layer { 
    name: "scale16000" 
    type: "Scale" 
    bottom: "fc16000" 
    top: "fc16000" # not 100% sure this layer can work in-place, worth trying though. 
    scale_param { 
    bias_term: false 
    filler: { type: "constant" value: 0 } 
    } 
    param { lr_mult: 0 decay_mult: 0 } # set mult to non zero if you want to train this scale 
} 
+1

Merci! Ça marche! –