【发布时间】:2021-03-18 16:02:26
【问题描述】:
我有简单的 CNN 来解决 MNIST 数据问题。
cnn_model = tf.keras.Sequential([
tf.keras.layers.Conv2D(filters=24, kernel_size=(3,3), activation='relu'),
tf.keras.layers.Conv2D(filters=36, kernel_size=(3,3), activation='relu'),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation=tf.nn.relu),
tf.keras.layers.Dense(10, activation='softmax')
])
这就是摘要的样子:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_12 (Conv2D) (None, 26, 26, 24) 240
_________________________________________________________________
conv2d_13 (Conv2D) (None, 24, 24, 36) 7812
_________________________________________________________________
flatten_13 (Flatten) (None, 20736) 0
_________________________________________________________________
dense_26 (Dense) (None, 128) 2654336
_________________________________________________________________
dense_27 (Dense) (None, 10) 1290
=================================================================
Total params: 2,663,678
Trainable params: 2,663,678
Non-trainable params: 0
_________________________________________________________________
为了简单起见,我跳过了问题中的池层。
第一个卷积层有240个参数,很容易计算:(内核大小+偏差)*过滤器数量:(3*3+1)*24。 请解释一下为什么第二个卷积层有7812个参数(36 * 217)。
flatten 层的大小为 20736。即前一层的 36 个过滤器产生的像素数:24 * 24 * 36。
但是我们如何从前一层的 24 张图像中通过 36 个过滤器获得 36 张图像呢? flatten 层的大小不应该是 36 * 24 * 24 * 24 即上一层的过滤器数量 * 上一层的位图大小 * 第一个卷积层的过滤器数量?
【问题讨论】:
标签: python tensorflow keras neural-network conv-neural-network