深度学习与神经网络(六)——卷积神经网络CNN(理解卷积神经网络的作用 & 局部相关性的共享机制 & nn.Conv2d & F.conv2d)

图像的色彩存储的时候是0-255,但我们做deeplearning的时候一般都是在0-1

 

理解卷积神经网络的作用

在我们之前说到的在80年代,处理一个需要1.6M的MNIST数据集都很困难

当时的科学家就想了一个办法

借鉴人眼的机制    receptive field感受野

当小孩子一眼看到桌子上的时候,他会被桌子上的蛋糕所吸引,因此他的视野里面,虽然说整个视野都能看得到,但第一眼看到的时候,可能是看到的是这个蛋糕,忽略了旁边的东西。当他慢慢回过神来以后,他才开始去关注旁边的一些事物。所以人眼的这样的机制就是一个局部相关性的属性。

当我们看一个风景的时候,我们不是一瞬间把所有风景都纳入眼底的,我们是一下子看一部分,然后有一个不自觉的扫描的过程,只不过因为时间太短了。然后我们把所有的信息综合在一起了,所以我们会觉得看到的是所有的风景,而实际上就是有局部相关性机制的,这种局部相关性我们叫做感受野

因此当时的计算机学家在80年代就提出了模仿人眼的局部相关性的机制,提出了卷积神经网络。

卷积指的是局部相关性

 

一次感受的是一个小方块,而不是整个图片的大区间

小窗口移动的时候,权值是共享的

权指共享是什么意思呢

就是这个小窗口会扫过整个大的图片,扫的时候是使用的相同的参数,就是小窗口的权指参数是不变的,这就叫做weight sharing

 

拿LeNet5为例,这就是一个卷积神经网络,也就是使用了权指共享的网络

一共5层,它的参数量大概是60K

我们之前说的做MNIST的全连接网络是390K,它还是4层的

LeNet5的参数量是它的1/6

 

局部相关性的共享机制

假设右边这一层是256个点

全连接网络的时候,对于每一个点,都是乘以28*28=784,也就是跟前一层有784根线连接

现在卷积神经网络,对于每个点,只用乘以小窗口的3*3=9,跟前一层只有9根线连接

得到的每个点使用的参数量大大减少

因为它只考虑了跟他局部相关的位置的属性,跟他太远的一些点它没有考虑,都断开了

 

线性全连接网络 vs  卷积神经网络

左图的一个点的连线与右图的一个点的连线(可以也选右图的黑点比较,都是黑),就可以很形象的看出其参数量的差距了

通过这种方式,我们卷积层的权指的数量会成倍的减少,但仍然考虑到了整个图片的权指的信息。既考虑到整个的属性,又照顾到了跟它局部相关的点

 

卷积得到的图片叫feature map,因为不同的卷积核会对应不同的feature,有锐化、模糊、边缘检测等等

 

卷积操作

 重叠越多,值越大

 

卷积神经网络

卷积得到的图片比原图要小

在形状等方面是原图的近似

如果我们在周围补0的话,可以得到28*28的,这就叫做padding操作

 

kernel卷积核可以理解是观察的视角

用边缘检测的卷积核得到的feature map就是边缘检测的,用模糊的卷积核得到的feature map就是模糊的

用边缘检测的视角得到的feature map就是边缘检测的,用模糊的视角得到的feature map就是模糊的

 

多kernel核

加入我们的原来图像是(1,28,28),即一个通道,图像尺寸是28*28

卷积核是(7,1,3,3),即由7个核,会得到7个feature map

最后得到的结果是 (7,26,26) ,卷积得到的图像的size会比原图小一些

即这里是7层

 

多核卷积运算的参数对应关系

one kernel的第一个3是与原图有3个通道对应的

bias的数量=kernel的数量

 

卷积神经网络的叠加

底层的feature map观察的角度是一些底层的特征,比如观察车的角度、边缘

第二次观察到角度是一些小维的概念,比如车的圆形、弧形、正方形

再高层就是一些更高维的概念,比如车有没有轮子、有没有玻璃

 

每一层都在前一层提取的特征上提取出更高维的特征

 

pytorch实现卷积神经网络

nn.Conv2d

nn.Conv2d(1,3,kernel_size=3,stride=1,padding=0)

第一个1是input channel,就是输入图像的通道数

第二个3是指卷积核的数量,也就是out_channel

所以input就是(1,28,28), kernel是(3,1,3,3)

调用一次layer.forward会直接完成一次卷积的前向运算

 

调整一下stride步长和padding参数

 

但是还是不推荐调用forward函数,推荐直接使用layer(x), 这相当于调用了__call__函数,里面封装了一些高级特性

 

 

F.conv2d

明白一个概念,在卷积神经网络中,权重weight就是我们的卷积核

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值