本文将指导您如何提取 Keras 模型中每一层的输出,类似于 TensorFlow 提供的功能。
问题:训练用于二元分类的卷积神经网络 (CNN) 后,希望获得每一层的输出。
答案:Keras 提供了一种简单的方法来实现此目的:
自定义提供的示例中的代码:
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)
注意: K.learning_phase() 参数对于像 Dropout 这样的层至关重要或 BatchNormalization 在训练和测试期间改变它们的行为。在模拟 Dropout 期间将其设置为 1,否则设置为 0。
优化:为了提高效率,建议使用单个函数来评估所有层输出:
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)
以上是如何访问 Keras 模型中的层输出?的详细内容。更多信息请关注PHP中文网其他相关文章!