图像卷积:使用卷积核扫描整张图片,每一次扫描与全局图对应部分相乘再累加
相比于线性层,CNN参数量更少,只有特征图上的点作为参数。
通常卷积核有多个,具体向量维度举例如下:
假设图像向量维度为【batch_size, channel_size, height, width】
卷积核的维度是【kernel_num, channel_size, kernel_height, kernel_width】
卷积核的通道数一定与图像的通道数保持一致,每个卷积核对应一个偏置,每个卷积之后得到的三个通道叠加得到一个新向量,因此输出的向量通道数与卷积核数保持一致。
卷积之后得到的特征包含信息越多
池化层作用:给特征图降维,有最大值池化和平均池化
传统CNN模块包含
conv2d - BatchNormalize(对feature进行缩放,使其接近于正态分布) - Pooling - ReLU(去掉相应低的特征部分)
Batch Normalization
目的:
减少梯度消失,加快了收敛过程。
起到类似dropout一样的正则化能力,一定程度上防止过拟合。
放宽了一定的调参要求。
When to use BN:
在神经网络训练时遇到收敛速度很慢,或梯度爆炸等无法训练的状况时可以尝试BN来解决。另外,在一般使用情况下也可以加入BN来加快训练速度,提高模型精度。
经典CNN - ResNet
CNN层数达到20层以上,训练效果不升反降,由此提出ResNet
在固定层之间使用短接线,保证至少不比原来差
何为残差
假设输入为x,输出为H(x),则要学习的部分为H(x) - x,即减去短接到输出的部分。
一个block的结构