我需要了解以下代码中卷积的工作原理以及每层/步骤后数组的形状如何变化
在 Conv2D(32,3,1,...) 32 是滤波器的数量,但是 3 和 1 是多少?
我认为我有一个包含 n_rows (行数)和 n_cols (列数)的表。该表已重新调整形状,以便列转移到另一个维度(维度数增加)。
现在是2D卷积:每行与32个滤波器进行卷积,这一步之后得到的矩阵形状是什么?卷积单独发生在每个原始数据上还是混合了多个行?
Xc_train = X_train.reshape((n_rows, 1, n_cols, 1))
cnn = Sequential()
cnn.add(Convolution2D(32, 3, 1,
border_mode="same",
activation="relu",
input_shape=(1, n_cols, 1)))
cnn.add(Convolution2D(32, 3, 1, border_mode="same", activation="relu"))
这是旧代码,Keras 1 版本。
应该更新到 Keras 2 以符合文档。
(n_images, n_rows, n_cols, n_channels)
使用
padding = 'same'
(旧代码中为border_mode
),图像尺寸不会改变。
唯一改变的维度是通道维度。
所有卷积滤波器始终考虑所有输入通道,将它们混合在一起并带来新数量的输出通道(这与密集层的做法非常相似,只不过您是针对整个图像的每个像素执行此操作) 。