2017-02-23 256 views
5

我正在使用Keras運行一個簡單的前饋網絡。 只有一個隱藏層我想對每個輸入與每個輸出的相關性做一些推論,我想提取權重。如何提取Keras序列模型中的偏置權重?

這是模型:

def build_model(input_dim, output_dim): 
    n_output_layer_1 = 150 
    n_output = output_dim 
    model = Sequential() 
    model.add(Dense(n_output_layer_1, input_dim=input_dim, activation='relu')) 
    model.add(Dropout(0.25)) 
    model.add(Dense(n_output)) 

要提取我寫的重量:

在矩陣
for layer in model.layers: 
    weights = layer.get_weights() 


weights = np.array(weights[0])  #this is hidden to output 
first = model.layers[0].get_weights() #input to hidden 
first = np.array(first[0]) 

不幸的是我沒有得到的偏見列,這我知道Keras自動放它。

你知道如何檢索偏差權重嗎?

非常感謝您的幫助!

回答

10

密集層的get_weights()返回兩個元素的列表,第一個元素包含權重,第二個元素包含偏差。所以你可以簡單地做:

weights = model.layers[0].get_weights()[0] 
biases = model.layers[0].get_weights()[1] 

請注意,權重和偏差已經是numpy數組。

+0

謝謝Matias,沒注意到! –

+0

對不起,打擾你了,輸出在我的模型中有什麼樣的激活函數?是否有默認選擇,還是僅僅是隱藏神經元激活的加權和? –

相關問題