1.全连接层可以视作一种特殊的卷积
考虑下面两种情况:
特征图和全连接层相连:AlexNet经过五次池化后得到77512的特征图,下一层全连接连向4096个神经元,这个过程可以看做有4096个77512的卷积核和77512的特征图进行卷积操作,最终得到114096的特征图,等价与全连接得到4096个神经元。
全连接层和全连接层相连:AlexNet的再下一层依然是4096个神经元,即4096个神经元和4096个神经元全连接,由(1)我们得到了114096的特征图,本次全连接过程可以看做存在4096个114096个卷积核,依次和114096的特征图进行卷积操作,等价与全连接。
2. 为什么卷积方便高效
方便:对于384384的图片,不修改AlexNet的结构使之适应384384(依然使用原来224x224输入的结构),直到经过汇聚层得到[12x12x512]的数组时,网络运行没有任何问题,按照原来的架构,接下来要将特征图平铺和4096个神经元全连接,这时候就出问题了,因为原架构平铺后是7x7,现在是12x12,无法使用之前的参数矩阵了,但是将全连接层转化为卷积层后可继续进行,并最终得到6x6的正确输出,仅仅将网络的全连接层等价转化为卷积层,就能接收更大的图片,这显然方便了很多。
高效:第一层卷积,对于224x224的一张图片,假设卷积耗时为t,那么前向传播时,36张图片的时间为36t,对于384x384的图片,耗时同样为66t = 36t,假设下一层为池化层,每次2x2池化的时间为ti,对于36张224x224的图片,总耗时36112112ti = 451584ti,对于384x384的图片,耗时为192192*ti = 36864ti << 451584ti,类似进行计算下去,发现全卷积每一层的耗时都少的多。因此全卷积效率更高,直观上如何得到这个结论呢?将384x384的图片按照32的步长切成224x224后得到36张图片,这36张图片有很多区域重叠了,本来一次池化就可以得到结果的,但是输入36张图片后,相同区域进行了多次重复池化操作,因此耗费了更多的时间。
3.
全连接层 | 卷积层 |
---|---|
全连接层是使用图像的全局信息,全连接层的权重是固定的,要求输入的feature map的大小也有要求,所以网络开始输入图像的大小要固定。全连接层的每一个节点都有上一层的所有节点相连。 | 卷积层取局部特征,不需要固定输入的大小,因为它是对局部区域进行窗口滑动。 |
例如:feature map大小3 * 3 * 2,有12个像素点,那么就需要将其转换成12*1的列向量,对于要乘的权重,形式应该为1 * 12,经过全连接层后的输出就是1 * 1.(可存在多权重,一个权重一行,输出为n * ( 1 * 1 )) | 例如:输入提箱是32 * 32 * 3,卷积层为一个5 * 5 * 3的filter(深度需要相同,可多个filter),通过filter后可得一个28 * 28 * 1的特征图。 |
卷积层优点:
局部连接:提取数据局部特征,比如卷积核的感受野。
权值共享:一个卷积核只需提取一个特征,降低了网络训练的难度
网友评论