Keras CNN架构

sdnqo3pr  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(106)

我需要理解卷积在下面的代码中是如何工作的,以及在每一层/每一步之后数组的形状是如何变化的。
在Conv 2D(32,3,1,...)中,32是过滤器的数量,但3和1是什么?
我认为我有一个n_rows(行数)和n_columns(列数)的表。此表将重新调整,以便将列转移到另一个维度(维度的数量增加)。
现在是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"))
gev0vcfq

gev0vcfq1#

这是旧代码,Keras 1版本。
它应该更新到Keras 2以符合文档。

  • 数字3和1是滤波器的大小,3 x 1像素。
  • 输入数据的形状应为(n_images, n_rows, n_cols, n_channels)

使用padding = 'same'(旧代码中为border_mode),图像大小不会改变。
唯一改变的维度是通道维度。
所有卷积过滤器总是考虑所有输入通道,将它们混合在一起,并带来新的输出通道数量(这与密集层非常相似,除了你为整个图像,为每个像素做这件事)。

相关问题