2016-04-23 7 views
4

Après la formation d'un réseau à l'aide Keras:Accès poids du réseau de neurones et les activations des neurones

  1. Je veux accéder aux poids formés finaux du réseau dans un certain ordre.

  2. Je veux connaître les valeurs d'activation des neurones pour chaque entrée passé. Par exemple, après la formation, si je passe X comme entrée sur le réseau, je veux connaître les valeurs d'activation des neurones pour ce X pour chaque neurone du réseau.

Keras fournit-il un accès API à ces éléments? Je veux faire une analyse plus approfondie basée sur les valeurs d'activation des neurones.

Mise à jour: Je sais que je peux le faire en utilisant uniquement Theano, mais Theano nécessite plus de codage de bas niveau. Et, puisque Keras est construit sur Theano, je pense qu'il pourrait y avoir un moyen de faire ça?

Si Keras ne peut pas faire cela, alors parmi Tensorflow et Caffe, qui peut? Keras est le plus facile à utiliser, suivi par Tensorflow/Caffe, mais je ne sais pas lequel d'entre eux fournit l'accès au réseau dont j'ai besoin. La dernière option pour moi serait de passer à Theano, mais je pense qu'il serait plus long de construire un CNN profond avec Theano ..

Répondre

5

Ceci est couvert par le Keras FAQ, vous voulez essentiellement calculer le activations pour chaque couche, de sorte que vous pouvez le faire avec ce code:

from keras import backend as K 

#The layer number 
n = 3 
# with a Sequential model 
get_nth_layer_output = K.function([model.layers[0].input], 
            [model.layers[n].output]) 
layer_output = get_nth_layer_output([X])[0] 

Malheureusement vous devez compiler et exécuter une fonction pour chaque couche, mais cela devrait être simple.

Pour obtenir les poids, vous pouvez appeler get_weights() sur une couche.

nth_weights = model.layers[n].get_weights()