Comment puis-je accéder et évaluer les sorties de couche dans un modèle Keras ?

DDD
Libérer: 2024-11-17 16:48:02
original
331 Les gens l'ont consulté

How can I access and evaluate layer outputs in a Keras model?

Obtention des sorties de couche dans Keras

Lors de la construction de modèles de réseaux neuronaux à l'aide de frameworks comme Keras, il peut être avantageux d'accéder aux sorties de couches individuelles à des fins d’analyse ou de débogage. Dans cet article, nous allons montrer comment récupérer les sorties de chaque couche dans un modèle Keras.

Considérez l'exemple de code suivant, où un modèle de classification binaire avec une architecture de réseau neuronal convolutif (CNN) est créé :

from keras.models import Sequential
from keras.layers import Convolution2D, Activation, MaxPooling2D, Flatten, Dense, Dropout

model = Sequential()
# ... (Model architecture as provided in the question)
Copier après la connexion

Accès aux sorties des calques

Pour obtenir la sortie d'un calque spécifique dans le modèle, vous pouvez utilisez l'attribut model.layers[index].output. Ici, l'index représente la position de la couche dans l'architecture du modèle.

Par exemple, pour accéder à la sortie de la première couche convolutive :

output = model.layers[0].output
Copier après la connexion

Obtenir les sorties de toutes les couches

Pour récupérer les sorties de toutes les couches du modèle, vous pouvez utiliser la liste compréhension :

outputs = [layer.output for layer in model.layers]
Copier après la connexion

Évaluation des sorties de couche

Pour évaluer les sorties obtenues à l'étape précédente, vous pouvez exploiter la méthode K.function fournie par le backend Keras :

from keras import backend as K

inputs = model.input
functor = K.function([inputs, K.learning_phase()], outputs)
Copier après la connexion

Ici, les entrées représentent la couche d'entrée du modèle, et K.learning_phase() est requis pour les couches qui présentent différentes comportement pendant la formation et l'évaluation (par exemple, abandon).

Enfin, pour évaluer les sorties de couche pour une entrée donnée :

test_input = np.random.random(input_shape)[np.newaxis,...]
layer_outputs = functor([test_input, 1.])
Copier après la connexion

Optimisation pour l'évaluation

Pour optimiser le processus d'évaluation, plutôt que de créer plusieurs fonctions pour chaque sortie de couche, vous pouvez créer une seule fonction qui renvoie toutes les sorties dans un list :

functor = K.function([inputs, K.learning_phase()], outputs)
Copier après la connexion

Notes supplémentaires

  • Les couches abandonnées doivent être exclues lors de l'évaluation en définissant K.learning_phase() sur 0.
  • La variable inputs peut représenter plusieurs tenseurs d'entrée si votre modèle a plusieurs entrées.
  • La variable layer_outputs sera contenir une liste de tableaux NumPy correspondant aux sorties de chaque couche.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal