为Keras卷积网络指定一些无法过滤的过滤器

时间:2018-05-04 15:35:08

标签: python keras convolutional-neural-network

我想开发一个卷积网络架构,在第一层(在本例中为Conv1D)中,我想预先指定一部分无法处理的固定滤波器,同时还有几个可训练的滤波器,模型可以学习。这有可能吗?如何做到这一点?

我的直觉是我可以制作两个单独的Conv1D图层 - 一个可训练且一个无法处理 - 然后以某种方式连接它们,但我不确定这在代码中会是什么样子。另外,对于不可绕过的滤波器,我如何预先指定权重?

2 个答案:

答案 0 :(得分:1)

使用功能API非常简单:

in = Input(....)
convA = Conv1D(filters1, kernel_size1, ...)
convB = Conv1D(filters2, kernel_size2, ...)

convB.trainable = False
convB.set_weights(some_weight_array)

conv1 = convA(in)
conv2 = convB(in)

convFinal = Concatenate(axis = -1)([conv1, conv2])

我没有尝试过代码,但是在填写小细节后它应该正常工作。

答案 1 :(得分:0)

所有keras图层都有set_weights方法(https://keras.io/layers/about-keras-layers/)。

您可以使用Conv1Dhttps://keras.io/getting-started/faq/#how-can-i-freeze-keras-layers)冻结trainable=False图层。

使用Conv1D图层(https://keras.io/layers/merge/)连接可训练的Conv1D和不可训练的Concatenate