我想在Keras中创建自己的图层。为了更精确,我想仅使用NumPy库(不包括TensorFlow部分)创建简单的卷积层。我这样做有一些原因-首先,要学习新知识,其次,我对如何修改该层有了一些想法,因此我必须从头开始编写它。为了使问题变得更容易,我们可以假设我只需要3x3内核大小的卷积层,而其他参数的默认卷积层。
我知道我必须基于:https://keras.io/layers/writing-your-own-keras-layers/
在def build(self, input_shape):
部分,我必须添加权重。卷积层需要filters
乘以3x3大小的内核矩阵。
在def call(self, x):
部分,我可以使用这些权重。但是我有一些问题。
我需要在输入中滑动-典型的卷积层任务(通过图像移动3x3矩阵)。但是我不能这样做,因为x
中的def call(self, x):
在?
中的第一个值中有None
或shape
。我知道它是batch_size,但是由于这个原因,我无法在该张量上使用循环。那么如何从x
获取所有数据(数字)以使用它们进行一些操作?
也许您有一些一般性提示,如何在Keras中从头开始创建自己的卷积层?
对我来说,问题不在于用numpy写卷积层(有关于它的材料,例如:https://github.com/Eyyub/numpy-convnet),而是要在不使用TensorFlow后端的情况下与Keras融合。