实现LeNet、AlexNet、VGGNet、InceptionNet、ResNet五个经典卷积网络
5.11 LeNet
5.12 AlexNet
5.13 VGGNet
VGGNet使用小尺寸卷积核,在减少参数的同时,提高了准确率。其网络结构规整,非常适合硬件加速。
十六层VGGNet网络为例:卷积核的个数从64提高到了128,到256,到512,逐渐增加。因为越靠后特征图尺寸越小,通过增加卷积核的个数,增加了特征图的深度,保持了信息的承载能力。
5.14 InceptionNet
InceptionNet的核心是染的基本单元Inception结构块,Inception结构块在同一层网络中是用多个尺寸的卷积核,可以体取不同尺寸的特征。通过1*1卷积核作用到每一个像素点,通过设定少于输入特征图深度的1*1卷积核个数,减少了输出特征图深度,起到了降维的作用、减少了参数量和计算量。
如上图(左边)所示,Inception结构块包含四个分支,分别经过1*1卷积核输出到卷积连接器、经过1*1卷积核配合3*3卷积核输出到卷积连接器、经过1*1卷积核配合5*5卷积核输出到卷积连接器、经过3*3最大池化核配合1*1卷积核输出到卷积连接器。送到卷积连接器的特征数据尺寸相同,卷积连接器会把收到的这四路特征数据按照深度方向拼接,形成Inception结构块的输出。
如上图(右边)为分支设置具体情况。然后卷积连接器把这四个分支按照深度方向堆叠在一起,构成了Inception结构块的输出。
由于Inception结构块中的卷积操作均采用CBA结构,先卷积、再BN、再用relu激活函数,所以将其定义成一个新的类ConvBNRelu可以减少代码长度、增强可读性
总的实现操作:
用tf.concat堆叠在一起;axis=3指定堆叠的维度是沿深度方向。
5.15 ResNet
ResNet提出了层间残差跳连,引入了前方信息,缓解梯度消失,是神经网络层数增加成为可能。