Maison  >  Article  >  développement back-end  >  Comment puis-je accéder et évaluer les sorties de couche dans un modèle Keras ?

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

DDD
DDDoriginal
2024-11-17 16:48:02332parcourir

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)

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

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]

É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)

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.])

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)

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!

Déclaration:
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