本文重点
在深度学习中,卷积神经网络(Convolutional Neural Networks, CNN)是一种常用的神经网络结构,其中卷积核是CNN的核心组件之一。卷积核是一个小矩阵,用于对输入数据进行卷积操作。卷积操作可以提取输入数据的特征,通过不同的卷积核可以提取不同的特征。
在前面课程中我们通过[1 -1]卷积核完成图像边缘特征的检测,从而证明了卷积核的特征提取能力,但我们需要思考一个问题,卷积核中的参数可以学习得到吗?换句话来说,[1 -1]这样的卷积核是我们人为设定的,如果我们不进行人为设定,而是随机一个1*2的卷积核,然后通过反向传播的方式,是否可以学习到[1 -1]这样的卷积核?
如果可以学习到,那么是不是可以认为卷积核的参数可以通过反向传播学习到。
验证
前面一篇文章中,我们给定了原始图片X和卷积核k,从而得到学习出边缘特征的图片Y。而现在我们将给定原始图片X和边缘特征的图片Y,然后通过反向传播的方式学习出卷积核k。
for i in range(10):#迭代10次
with autograd.record():
Y_hat=conv2d(X)#将图片X输入到卷积神经层中,从而得到输出
l=(Y_hat-Y)**2#输出Y_hat和目标Y做平方和误差
l.backward()#使用误差进行反向传播
这里只有一部分代码,我们来进行解释,X表示原始图片,conv2d表示卷积层&