19 卷积层【动手学深度学习v2】

图片识别两原则:
·平移不变性:需要识别的对象特征不会因为在图片上位置的改变而改变。
·局部性:无需获取整个图片的全部信息即可找到识别对象。

卷积是一种特殊的全连接层。
一般的全连接层输入输出的是数列。
卷积层输入输出矩阵信息。(矩阵信息可以很好地保留图片上像素的位置信息)
具体的说,卷积层可以将输入的形状为(k,l)的矩阵转换为形状(i,j)的矩阵。所以卷积层参数w要变为四维(i,j,k,l)的形状。即输入和输出矩阵对应的长宽值。

上图中v是对w的重新索引,可理解为卷积核的移动。
利用平移不变性进行更深入的理解:
卷积核v应该是相同的,与位置(i, j)无关

利用局部性进行更深入的理解:
卷积核的大小应该是有限制的

卷积层
卷积层工作原理图示
严格来说,卷积层是个错误的叫法,因为它所表达的运算其实是互相关运算(cross-correlation),而不是卷积运算。


不同的卷积核会产生不同的效果:

其他维度的卷积网络

卷积算法总结

代码实现
X为输入,K为卷积核

检验卷积核性能

构建卷积层

卷积层使用例:识别垂直边缘
构建一个形状为(1,2)的卷积核,使得其在扫过图像中的垂直边缘时返回非0值。


用Pytorch自带的卷积网络功能nn.Conv2d()进行参数学习
其中的1,1是指输入和输出通道数,本课仅涉及黑白图片所以都是1
对X与Y进行reshape:分别为通道维:通道数,RGB图3通道,灰度图1通道,批量维就是样本维,就是样本数,在此例子中都是1.

训练结果
epoch 2, loss 15.223 epoch 4, loss 5.325 epoch 6, loss 2.029 epoch 8, loss 0.805 epoch 10, loss 0.326

知识补充:
损失曲线抖动严重,可能是因为数据多样性较大,或者因为学习率设置过大。