簡體   English   中英

將圖層的一半濾鏡設置為不可訓練的keras / tensorflow

[英]Set half of the filters of a layer as not trainable keras/tensorflow

我正在嘗試訓練研究論文建議的模型,其中我將卷積層的一半濾波器設置為Gabor濾波器,其余的是默認初始化的隨機權重。 通常,如果我必須將圖層設置為不可訓練,我將trainable屬性設置為False 但是在這里我只需要凍結一層過濾器的一半,我不知道該怎么做。 任何幫助將非常感激。 我正在使用帶有Tensorflow后端的Keras。

如何制作兩個獲得相同輸入和(幾乎)相同參數的卷積層? 因此,其中一個是在初始化時可訓練的隨機權重,而另一個層是用gabor過濾器無法訓練的。

然后,您可以將兩個層的輸出合並在一起,使其看起來像是來自一個卷積網絡的輸出。

以下是演示示例(您需要使用Keras功能API ):

n_filters = 32

my_input = Input(shape=...)
conv_freezed = Conv2D(n_filters/2, (3,3), ...)
conv_trainable = Conv2D(n_filters/2, (3,3), ...)

conv_freezed_out = conv_freezed(my_input)
conv_trainable_out = conv_trainable(my_input)
conv_out = concatenate([conv_freezed_out, conv_trainable_out])

# set weights and freeze the layer
conv_freezed.set_weights(...)
conv_freezed.trainable = False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM