我需要帮助来理解 CNN。
model = keras.models.Sequential()
model.add(convolutional.Convolution2D(32, (8,8), activation='relu', strides=(4, 4), padding='same',input_shape=(80,80,4)))
model.add(convolutional.Convolution2D(64, (4, 4), activation='relu', strides=(2, 2), padding='same'))
model.add(convolutional.Convolution2D(64, (3, 3), activation='relu', strides=(1, 1), padding='same'))
我不确定第一个 CNN 的输出。我知道它超过 32 个过滤器,内核大小为 8x8,步幅为 4x4。我也知道这个计算宽度的公式:
W=(W−F+2P)/S+1
W = (80 - 8 + ?? ) / 4 + 1
我不确定在 P 上放什么 - 这意味着 padding 。你能帮我理解第一个CNN的输出大小吗?另外,你能帮我理解为什么过滤器在第一步后从32变为64吗?有什么好的理由吗?
该参数padding=same
意味着您的输入将被填充,以便该层的输出与原始输入具有相同的长度。向输入添加填充只是意味着在输入的外边缘周围添加像素(通常值为 0)。您希望这样做,以便指定的过滤器能够对整个输入进行卷积,而不会丢失边缘上的某些像素值。有关在 Keras conv 层中使用此参数的更多详细信息,请参见此处的 Keras 文档。
要查看这些层的输出大小,请运行model.summary()
。这将显示模型中每一层的输出大小。
最后,过滤器大小是任意选择/设置的,但一般来说,随着模型变得更深和更复杂,过滤器通常会在后面的层中增加大小。我有一个关于 CNN的视频,它解释了这些概念并直观地展示了这个过程,你可能会发现它很有用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句