本文將指導您如何提取 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中文網其他相關文章!