卷积神经网络系列,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共同学习。但是现在就可以完全用一台电脑完成。
在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提取到的特征能够对原始图像提取更多有用信息,分类效果更好。
现在,我们来了解要训练一个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。
- 上一篇 »CNN卷积神经网络总结
- 下一篇 »tensorflow实现循环神经网络