This article will guide you on how to extract the output of each layer in a Keras model, analogous to the capability provided by TensorFlow.
Problem: After training a convolutional neural network (CNN) for binary classification, it is desirable to obtain the output of each layer.
Answer: Keras offers a straightforward method to achieve this:
Customizing the code in the provided example:
from keras import backend as K # Define input and layer outputs input = model.input outputs = [layer.output for layer in model.layers] # Create a function to evaluate the output fn = K.function([input, K.learning_phase()], outputs) # Testing test_input = np.random.random(input_shape)[np.newaxis,...] layer_outputs = fn([test_input, 1.]) # Print the layer outputs print(layer_outputs)
Note: The K.learning_phase() argument is crucial for layers like Dropout or BatchNormalization that alter their behavior during training and testing. Set it to 1 during simulation of Dropout and 0 otherwise.
Optimization: For efficiency, it is recommended to use a single function for evaluating all layer outputs:
fn = K.function([input, K.learning_phase()], outputs) # Testing test_input = np.random.random(input_shape)[np.newaxis,...] layer_outputs = fn([test_input, 1.]) # Print the layer outputs print(layer_outputs)
The above is the detailed content of How to Access Layer Outputs in a Keras Model?. For more information, please follow other related articles on the PHP Chinese website!