我从Udacity教程“ Intoduction to Deep learning with TensorFlow”中获得了以下代码:
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(32, (3,3), padding='same', activation=tf.nn.relu,
input_shape=(28, 28, 1)),
tf.keras.layers.MaxPooling2D((2, 2), strides=2),
tf.keras.layers.Conv2D(64, (3,3), padding='same', activation=tf.nn.relu),
tf.keras.layers.MaxPooling2D((2, 2), strides=2),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation=tf.nn.relu),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
我不明白第二层Conv2D
在第一MaxPooling2D
层之后的计算方式。
让我们假设我们正在处理28x28px的图像。第一Conv2D
层返回(28、28、32)形状,其中32等于要应用的过滤器数。 (3,3)是内核大小。然后将结果发送到MaxPooling2D
层,该层将图像大小从(28,28,32)减小为(14,14,32)。我在这里吗?
现在我们有了一个形状(14,14,32),并将其发送到第二个Conv2D
层,它将使用(3,3)内核应用64个过滤器。
应用(3,3)带有64个过滤器的内核的过程在我们的(14,14,32)数据上看起来如何?第二Conv2D
层是否会创建(14,14,2048)输出形状?还是第二个Conv2D
层将为64个应用过滤器之一创建(14、14、32)x64个不同的块?
我已经在整个互联网上进行搜索,以直观地找到如何更好地理解这一过程的运气。
谢谢!
答案 0 :(得分:-1)
您始终可以使用model.summary()
方法查看神经网络的体系结构。该模型的架构如下:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 28, 28, 32) 320
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 14, 14, 32) 0
_________________________________________________________________
conv2d_1 (Conv2D) (None, 14, 14, 64) 18496
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 7, 7, 64) 0
_________________________________________________________________
flatten (Flatten) (None, 3136) 0
_________________________________________________________________
dense (Dense) (None, 128) 401536
_________________________________________________________________
dense_1 (Dense) (None, 10) 1290
=================================================================
由于padding='same'
为conv2d_1
,因此暗淡将保持为14 x 14
。通道数等于应用于此层的过滤器数。因此,第二转换层的输出尺寸将为14 x 14 x 64
。
编辑:@avin在下面的评论中分享了很多精彩的资源。我将其添加为答案的一部分,以确保它不会在评论中丢失。谢谢你,@ avin!
http://cs231n.github.io/convolutional-networks/提供了CNN的直观说明。