我已經Conv2D層定義爲:
如何在keras中正確地從Conv2D獲取圖層權重?
Conv2D(96, kernel_size=(5, 5),
activation='relu',
input_shape=(image_rows, image_cols, 1),
kernel_initializer=initializers.glorot_normal(seed),
bias_initializer=initializers.glorot_uniform(seed),
padding='same',
name='conv_1')
這是我的網絡中的第一層。
輸入尺寸64乘160,圖片爲1個通道。
我想從這個卷積圖層中看到權重,但不知道如何獲得它們。
這裏是我現在如何這樣做:
1.Call
layer.get_weights()[0]
這returs形狀的陣列(5,5,1,96)。 1是因爲圖像是1通道。
2.Take 5×5個濾波器由
layer.get_weights()[0][:,:,:,j][:,:,0]
非常難看,但我不知道如何簡化這一點,任何意見都非常讚賞。
我不確定這些5乘5格。他們真的過濾嗎?
如果沒有人可以請告訴如何正確地從模型中抓取過濾器?
感謝您的回答!這是一個非常奇怪的事情:在隨機初始化的情況下權重是相似的。我正在使用爲conv層推薦的glorot初始化。對我來說最困惑的問題是:我們正在訓練網絡,但體重相同。我們訓練了什麼?對此沒有回答... –
那麼權重的第三維是什麼?在'x1w = x.get_weights()[0] [:,:,0,:]'中,'[:,:,0,:]'中的0。我認爲前兩個變暗是內核x和y,最後一個是內核的數量 - 但我不知道第三維是什麼。它似乎是前一層輸出的維度,但我不明白爲什麼或者什麼是真正意義。 – wordsforthewise
0是紅色通道。三個維度是紅色綠色和藍色。第一個是x第二個是y第三個是通道,最後是第n個卷積層。 – John