卷积神经网络系列,4——经典CNN网络

来源于油管视频

卷积神经网络系列,4——经典CNN网络

AlexNet网络结构:input-conv1- max pooling1-Norm1-conv2-max pooling2-Norm2-conv3-conv4-conv5-max pooling3-FC-FC-Softmax

CONV1:96个filter,11×11的尺寸过大,stride=4也过大;

MAX POOL1:3×3,stride=2是常见的尺寸大小;

Norm1:现在被证明没什么用,可以不用;

CONV2:这一步可以提取到更加细节的特征,filter的个数变成256个,因为当用了下采样pooling之后,特征图的宽高变化很大(上次的例子变成了原来大小的1/4),为了能够足够表示原始图片的信息,我们增加了filter的个数;

MAX POOL2:一般之前用多大的pool的尺寸,之后都保持一样;

CONV3——CONV5:保持了原来特征图的尺寸大小;

FC:全连接的参数很多,比较占内存;

FC8:最后要进行多少个分类,就接多少个神经元。

为什么最上面有两层的结构呢?

这是因为2012年的时候GPU内存太小,不足以支撑如此深度的学习,因此有两个GPU共同学习。但是现在就可以完全用一台电脑完成。

卷积神经网络系列,4——经典CNN网络

在2012年,AlexNet的分类效果取得了突破性的进展,但是在现实应用的过程中,不见得AlexNet处理分类任务有多么出色。我们现在经常用到的网络是VGGNet。

AlexNet和VGGNet的区别:

1、VGGNet的深度更深。一般有两个版本,一种有16层,另一种是19层,在实际应用中,一般更常使用19层的网络;

2、AlexNet的filter尺寸大小不同,而VGGNet都是3*3的,能够更细粒度的对原始图像的信息进行提取;

3、在pooling的时候,AlexNet是3×3的,VGGNet是2×2的。

总之,通过VGGNet提取到的特征能够对原始图像提取更多有用信息,分类效果更好。

卷积神经网络系列,4——经典CNN网络

现在,我们来了解要训练一个16层的VGGNet所需的内存还有参数分别是多少?

对于INPUT来说,所占的内存是W×H×C;

对于CONV3-64来说,所占的内存是W×H×F(F是filter的个数),所需的参数是filter的尺寸再乘以个数,即W×H×D×F;

对于pooling来说,它没有参数,只是去了max值;

对于FC:[1×1×4096]:占的内存是W×H×F(F是filter的个数),所需的参数是上一层特征图的尺寸再乘以全连接层神经元的个数;

可以发现,全连接层的参数个数远大于卷积层的参数个数,内存基本消耗在了FC层。

整体需要的内存:内存乘以字节数,对于一张图片来说是需要93兆内存,因为我们训练的过程中,是一个batch进行训练的,如果一个batch包含了64张图片,那我们需要的内存空间就是64×93。