我试图在我的Keras模型中实现一个使用特定高斯滤波器的conv2D层 . 虽然现有的Keras Conv2D没有过滤器本身的参数,但我有生成过滤器的代码 . 相反,有一个 filters
参数,它是一个指定输出空间维度的整数,以及 kernel_size
,它是一个指定内核维度的元组 .
我试图使用Keras后端的东西来解决这个问题,因为conv2D函数here允许你像我想要的那样输入一个特定的过滤器 . 问题是我不知道如何将它重新放回我的模型中,所以再一次,我被卡住了 . 我也发现了类似我的问题,如this一个建议编写我自己的图层,但我不确定如何去做,如果有一个更简单的方法,我希望避免它 .
一如既往,非常感谢任何帮助 .
2 回答
长答案简称: You don't need a convolutional layer at all . 卷积层的目的是为您找到合适的过滤器 . 由于您已经知道要使用哪个过滤器,因此您可以愉快地跳过整个卷积内容并直接跳到完全连接的层 . 将高斯滤镜应用于图像 . 然后使用 Flatten() 图层将图像直接提供给MLP .
不要试图在推车上添加第五个轮子 .
希望这有帮助 .
我刚刚发布了linked问题的答案,但这里作为如何在Keras中应用自定义过滤器的示例可能很有用 . 对于高斯的例子,使用适用于2D的this来获得滤波器,
然后,您可以将其设置为初始过滤器并冻结该层,使其不再训练,这看起来像这样,
并且可以适应添加更多可训练的层 .