首頁 > 後端開發 > Python教學 > 如何從 Keras 模型中的特定層提取活化?

如何從 Keras 模型中的特定層提取活化?

Patricia Arquette
發布: 2024-11-30 02:49:14
原創
762 人瀏覽過

How to Extract Activations from Specific Layers in a Keras Model?

如何取得 Keras 中每一層的輸出

使用深度神經網路 (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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板