在Keras 中取得層輸出
使用Keras 等框架建構神經網路模型時,存取各層的輸出可能會很有幫助用於分析或調試目的。在本文中,我們將示範如何檢索 Keras 模型中每一層的輸出。
考慮以下範例程式碼,其中建立了具有捲積神經網路(CNN) 架構的二元分類模型:
from keras.models import Sequential from keras.layers import Convolution2D, Activation, MaxPooling2D, Flatten, Dense, Dropout model = Sequential() # ... (Model architecture as provided in the question)
存取圖層輸出
取得特定圖層的輸出對於模型,您可以利用model.layers[index].output 屬性。這裡,index 代表該層在模型架構中的位置。
例如,要存取第一個卷積層的輸出:
output = model.layers[0].output
取得所有層的輸出
要擷取模型中所有層的輸出,可以使用list理解:
outputs = [layer.output for layer in model.layers]
評估層輸出
要評估上一個步驟所獲得的輸出,您可以利用Keras 後端提供的K .function 方法:
from keras import backend as K inputs = model.input functor = K.function([inputs, K.learning_phase()], outputs)
這裡,inputs代表模型的輸入層,K.learning_phase()是在訓練和評估期間表現出不同行為的層(例如Dropout)所需的。
最後,評估給定輸入的層輸出:
test_input = np.random.random(input_shape)[np.newaxis,...] layer_outputs = functor([test_input, 1.])
評估最佳化
為了最佳化評估過程,您可以建立一個傳回所有層輸出的單一函數,而不是為每個層輸出建立多個函數。清單中的輸出:
functor = K.function([inputs, K.learning_phase()], outputs)
附加說明
以上是如何存取和評估 Keras 模型中的層輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!