CNN
卷积层
- 平移不变性,局部性
- 虽称为卷积,但用的是 互相关运算(不翻转), 而非信号处理中的卷积(翻转)概念
- 影响前向计算的所有可能输入区域称为 感受野
- 填充(padding) 是在输入高宽两侧填充,通常为0,控制输出形状的减少量
- 步幅(stride) 是卷积核每次滑动的大小,使得输出形状成倍减少
conv_valid = keras.layers.Conv2D(
filters=1,
kernel_size=kernel_size,
strides=strides,
padding="VALID")
- 卷积核本质是二维信号滤波器
- 卷积本质是提取图像不同频率的特征
- 核矩阵大小、填充、步幅是超参数
- 有时,1个5×5卷积核 不如 2个3×3卷积核
- 训练 CNN 需大量内存,如内存不足需调整 batch_size 或 strides
- 核矩阵和偏移的值是可学习的参数
- 每个卷积和生成一个 特征图
- 在 TensorFlow 中,3D图像格式为[h, w, c]
1*1 卷积核
- 作用: 不识别模式,只增加通道
; 池化层
- 对称不变形,下采样
- 减小计算量、内存占用和参数(防止过拟合)
- 缓解卷积层对位置的过度敏感性
- 最大池化,均值池化…
max_pool = keras.layers.MaxPool2D(pool_size=2)
avg_pool = keras.layers.AvgPool2D(pool_size=2)
- 最大池化保留了最强的特征,因此效果通常比均值池化好
- 也有填充、步幅,是超参数
- 没有可学习参数
- 对每个输入通道分别池化,输出通道数不变
经典CNN网络
LeNet
- 卷积-池化-…-全连接-输出
AlexNet
VGG
- 重复使用3×3卷积块
- 不同卷积块个数和超参数得到不同复杂度的变种
; NiN
- 串联多个卷积层和全连接层构成小网络并构建深层网络
GoogLeNet
- 第一个达上百层的模型
- 含非常经典的子模块 Inception
- 常用Iception版本为 V3, V4
- 不同层面重启特征,然后融合
; ResNet -非常经典的残差结构
- resnet50:
- skip-connection 有效地缓解梯度消失
DenseNet
- 在通道维度上连结
; Xception
- 深度可分离卷积
- depthwise + pointwise
- 各通道分别卷积处理,再合并(或先合并再分别卷积)
SE-Net
- Squeeze-and Excitation Network
- SE块分析其连接的单元的输出,仅专注于深度维度,并了解哪一些特征通常最活跃,然后使用此信息重新校准特征图
- SE块的组成:
- SE-Inception模块 和 SE-ResNet单元:
; DeepLab
PSPNet
; 使用预训练模型
model = keras.applications.resnet50.ResNet50(weights="imagenet")
Original: https://blog.csdn.net/weixin_44211644/article/details/124219613
Author: RainyMacondo
Title: 【Geron-机器学习实战】学习笔记 3-卷积神经网络 CNN的基本介绍
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/692175/
转载文章受原作者版权保护。转载请注明原作者出处!