使用深度神經網路 (DNN) 時,檢查各層的活化通常很有用。這可以幫助您了解模型的行為並識別潛在的問題。 Keras 是一個流行的 Python DNN 函式庫,提供了一個簡單的方法來實現這一目標。
Keras 模型被建構為一系列層,每個層執行特定的操作輸入。要檢索特定圖層的輸出,您可以使用以下語法:
model.layers[index].output
其中索引是要從中提取輸出的圖層的索引。例如,要取得提供的程式碼片段中第二個卷積層的輸出:
conv_output = model.layers[2].output
要從模型中的所有層提取輸出,您可以使用列表理解:
outputs = [layer.output for layer in model.layers]
實際評估對於各層的輸出,Keras 提供了一組稱為K.function 的函數。這些函數將張量列表作為輸入並傳回輸出列表。
要為每個層輸出建立評估函數,您可以執行以下操作:
from keras import backend as K functors = [K.function([inp, K.learning_phase()], [out]) for out in outputs]
其中inp 是輸入張量,K.learning_phase() 是一個標誌,指示模型處於訓練模式還是推理模式,out是輸出
現在,您可以透過將輸入資料傳遞給對應的評估函數來評估層輸出:
test = np.random.random(input_shape)[np.newaxis,...] layer_outs = [func([test, 1.]) for func in functors] print layer_outs
記住設定 K。如果模型中的任何層包含 dropout 或批量歸一化來模擬訓練模式,則learning_phase() 為 1。
評估層輸出的更有效方法是使用單一函數傳回所有層的輸出清單:
from keras import backend as K functor = K.function([inp, K.learning_phase()], outputs)
這減少了與個人功能評估。
以上是如何從 Keras 模型中的特定層提取活化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!