卷积层 (Convolutional Layer)

比喻:一群“特征侦探”。每个侦探(称为卷积核滤波器)都只负责寻找一种特定的微小特征,比如一个侦探找“垂直边缘”,另一个找“圆形轮廓”。它们会地毯式地搜查整张图片,每当找到自己负责的特征时,就在“地图”(称为特征图)上标记出来。

动手试试:

点击“执行一步”,观察 3x3 的卷积核(橙色框)如何在 5x5 的输入图像上滑动,并通过元素相乘再求和的方式,计算出右侧特征图中的一个值。

输入图像

*

卷积核

=

特征图

from tensorflow import keras from keras import layers model = keras.Sequential([ # 卷积层 layers.Conv2D( filters=32, # 32个卷积核 kernel_size=(3, 3),# 卷积核大小 activation='relu', input_shape=(28, 28, 1) ), # ... 其他层 ])

池化层 (Pooling Layer)

比喻:“信息压缩员”。在侦探们(卷积层)画出详细的特征地图后,池化层会对地图进行“浓缩”,只保留每个小区域内最重要的信息(例如,最大值或平均值)。这不仅能减少计算量,还能让模型对特征的微小位置变化不那么敏感(例如,无论猫的眼睛在图片的左上角还是稍微偏右一点,模型都能认出来)。

动手试试:

点击“执行一步”,观察 2x2 的池化窗口(绿色框)如何在 4x4 的特征图上滑动,并从中提取最大值,生成一个 2x2 的新特征图。

输入特征图

输出特征图

# ... 接在卷积层之后 model.add( # 最大池化层 layers.MaxPooling2D(pool_size=(2, 2)) ) # ... 其他层

全连接层 (Fully Connected Layer)

比喻:“最终决策者”。在经过多轮的“侦查”(卷积)和“信息压缩”(池化)后,所有高级特征会被“压平”成一个长长的列表,然后送入全连接层。这一层就像一个传统的神经网络,它会综合所有提取到的高级特征,并做出最终的分类或回归决策(例如,“这张图片是猫的概率是95%”)。

特征图
压平 (Flatten)
全连接层
输出
# ... 接在池化层之后 # 首先将多维特征图压平 model.add(layers.Flatten()) # 全连接层 model.add(layers.Dense(units=128, activation='relu')) # 输出层 (也是一种全连接层) model.add(layers.Dense(units=10, activation='softmax'))