大数据,机器学习,人工智能

CNN

2021-12-08  本文已影响0人  AyyB

和BP网络不同的是,cnn的特点是权值共享(卷积核filter),并且不需要人工的特征分析。

在BP网络中,我们使用的是全连接,即每层神经元都会把各自权重分别的传递给下一层神经元,这样所出现的问题就是,我们所使用的参数(权重、偏差等)过多,计算量过大。

而在cnn中我们所使用的filter卷积核(三维,大小*通道数),遍历一个样本所使用的权值都是相同的,即所谓的权值共享。

通过一系列的卷积+池化的操作,完成了对图片数据的特征提取。然后将图片的三维信息摊成一维向量,放入全连接层(将最后的输出应映射到线性可分的空间)。cnn的最后会将末端得到一个长长的向量,并送入全连接层配合输出层进行分类。

高维输入:图片由RGB三种像素,一个filter有一个通道数,输出结果为二维结构,为一个二维平面。如果想得到多个卷积面,即多个卷积结构,可以设置多filter,即输出卷积层为立体结构,而非二维结构。如下图中第一次卷积出现6个卷积层,第二次卷积出现16个卷积层,都是由filter的个数决定的。

一个三位图片经过一个卷积(filter)操作后得到一个卷积层(二维结构)。卷积操作后得到的层数不是输入的维度决定的,是由filter的个数决定的。

输入样本大小(28, 28),经过卷积filter(3, 3),之手输出为(26, 26),即:28-(3-1) = 26。

对于layers.Conv2D()操作来说,输入必须是四维的,而不是单纯的图片大小的二维结构。所以在搭建网络前,需要把输入reshpe为[样本数,长,宽, 通道数],这里的长宽即为图片像素大小,即长*宽,通道数即为图片的颜色通道(rgb)。此时经过filte(32, (3, 3))的卷积后,输出shape为(1, 26, 26, 32)。此时通过plt可查看卷积之后的输出效果,(plt.imshow(conv2d[0, :, :, 0])),在这里0是指样本数,我们这里只使用了一个样本,当然取值为0,[:, :]是指样本大小,当然要全部输出,'0'是指卷积层数,我们这里输出第0层。

池化输出同理得出,相比卷积层,在输入和输出有所不同。通道输入变为卷积层的输出(32),输出像素更小,更加模糊。

上一篇下一篇

猜你喜欢

热点阅读