2017-01-06 2 views
1

Est-il possible d'aller chercher les poids de la couche précédente, de les modifier et de les redéfinir sur la couche suivante. Je veux introduire une couche personnalisée dans le réseau qui va modifier les poids (selon la logique désirée) et ensuite définir les valeurs de poids modifiées à la couche suivante. Semblable à ce qui est représenté sur la figure ci-dessous:Récupérer les poids de la couche précédente

enter image description here

Je ne sais pas si cela est possible ou non. Je sais que nous pouvons vider l'instantané, puis l'utiliser pour définir les nouveaux poids. Je peux également convertir les poids en utilisant les instantanés. Mais, je ne sais pas comment le faire dans le réseau lui-même (sans prendre ou utiliser aucun instantané).

Merci

KK

Répondre

0

tl; dr: Charger un modèle (sans compilation) et utiliser les poids que vous souhaitez initialiser un modèle. Créez de nouveaux poids pour les couches que vous souhaitez modifier.

Version complète:

Comme par this thread et comme l'a expliqué lui-même fchollet, la manière canonique de le faire est de charger votre poids dans le modèle précédent Keras (vous n'avez pas besoin de le compiler, donc c'est instantané) et utiliser ce modèle comme une structure de données pouvant être interrogée pour accéder aux poids.

Pour un modèle séquentiel vous pouvez le faire comme ceci:

weights = model.layers[5].get_weights() 
model.layers[5].set_weights(weights) 

Voir aussi: another discussion sur ce sujet avec fchollet.