Lorsque vous travaillez avec des réseaux de neurones profonds (DNN), il est souvent utile d'inspecter les activations de couches individuelles. Cela peut vous aider à comprendre le comportement du modèle et à identifier les problèmes potentiels. Keras, une bibliothèque DNN populaire pour Python, fournit un moyen simple d'y parvenir.
Les modèles Keras sont construits sous la forme d'une séquence de couches, chacune effectuant une opération spécifique sur l'entrée. Pour récupérer la sortie d'une couche particulière, vous pouvez utiliser la syntaxe suivante :
model.layers[index].output
où index est l'index de la couche dont vous souhaitez extraire la sortie. Par exemple, pour obtenir la sortie de la deuxième couche convolutive dans l'extrait de code fourni :
conv_output = model.layers[2].output
Pour extraire la sortie de toutes les couches du modèle, vous peut utiliser une compréhension de liste :
outputs = [layer.output for layer in model.layers]
Pour évaluer réellement le sorties des couches, Keras fournit un ensemble de fonctions appelées K.function. Ces fonctions prennent en entrée une liste de tenseurs et renvoient une liste de sorties.
Pour créer une fonction d'évaluation pour chaque sortie de couche, vous pouvez procéder comme suit :
from keras import backend as K functors = [K.function([inp, K.learning_phase()], [out]) for out in outputs]
où inp est le tenseur d'entrée, K.learning_phase() est un indicateur pour indiquer si le modèle est en mode entraînement ou inférence, et out est la sortie de la couche.
Maintenant, vous pouvez évaluer les sorties de couche en transmettant les données d'entrée à la fonction d'évaluation correspondante :
test = np.random.random(input_shape)[np.newaxis,...] layer_outs = [func([test, 1.]) for func in functors] print layer_outs
N'oubliez pas de définir K.learning_phase() sur 1 si l'un des les couches de votre modèle incluent l'abandon ou la normalisation par lots pour simuler le mode d'entraînement.
Une approche plus efficace pour évaluer les sorties des couches consiste à utiliser une seule fonction qui renvoie la liste des sorties pour toutes les couches :
from keras import backend as K functor = K.function([inp, K.learning_phase()], outputs)
Cela réduit le transfert de données et la surcharge de calcul associée aux évaluations de fonctions individuelles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!