卷积神经网络中池化层的作用(卷积层与池化层)

生活百科 2023-04-30 20:33生活百科www.xingbingw.cn

  卷积神经网络中池化层的作用(卷积层与池化层)、本站经过数据分析整理出卷积神经网络中池化层的作用(卷积层与池化层)相关信息,仅供参考!

  点击上方关注,尽在AI中国

  目录

   CNN是什么?为什么要用CNN?在CNN 1中定义层的几个Keras实现。CNN是什么?计算机视觉快速发展的原因之一是深度学习。当我们谈到计算机视觉时,我们会想到一个术语,卷积神经网络(简写为CNN),因为CNN会被广泛应用于这个领域。计算机视觉中CNN的例子有人脸识别、图像分类等。它类似于一个基本的神经网络。还有CNN可以学习的参数,比如神经网络,即权重、偏差等。

   2.为什么要用CNN?前馈神经网络问题

  假设您正在使用MNIST数据集,并且您知道MNIST的每个图像都是28 x 28 x 1(黑白图像仅包含1个通道)。输入层的神经元总数将是28 x 28=784,这是可以管理的。如果图像的大小是1000 x 1000,就意味着输入层需要10个神经元。手术中似乎需要大量的神经元。它在计算上是无效的,这就是卷积神经网络。简单来说,CNN做的就是提取图像的特征,在不丢失特征的情况下,将图像转换成更低维度的图像。在下面的示例中,您可以看到初始图像的大小为224 x 224 x 3。如果不继续卷积,那么输入层需要224 x 224 x 3=100,352个神经元,应用卷积后,你的输入张量维数降低到1 x 1 x 1000。这意味着前向神经网络的第一层只需要1000个神经元。

   3.几个定义在你了解CNN之前,你应该知道的定义很少。

   3.1图像表示

  考虑到图像,很容易理解它是有高度和宽度的,所以用二维结构(矩阵)表达其中包含的信息是有意义的,直到你记住图像有颜色,加上关于图像的信息的颜色,也就是当张力的量变得特别有用的时候,我们就需要另一个维度了。

  图像被编码到颜色通道中,图像数据被表示为颜色通道中每种颜色在给定点的强度,最常见的是RGB,即红色、蓝色和绿色。图像中包含的信息是每个通道颜色的强度转换成图像的宽度和高度,就像这样。

  所以红色通道在每个点上的强度随宽度和高度的变化可以表示为一个矩阵,蓝色和绿色通道也是如此,所以我们最终有了三个矩阵,当它们组合在一起时,就形成了张量。

   3.2边缘检测

  每个图像都有垂直和水平边缘,它们实际上组合在一起形成一个图像。卷积运算与一些滤波器一起使用来检测边缘。假设你有一个大小为6 x 6的灰度图像和一个大小为3 x 3的滤镜(比方说)。当66的灰度图像与33的滤波器卷积时,我们得到44的图像。,3 x 3过滤器矩阵乘以我们的灰度图像的第一个3 x 3大小,然后我们向右移动一列到末尾,之后我们移动一行,等等。

  卷积运算

  卷积运算可以通过以下方式来可视化。我们这里的图像大小是4 x 4,滤镜是3 x 3,所以卷积到2 x 2后得到的输出。

  卷积的可视化

  如果我们有NN的图像尺寸和FF的滤波器尺寸,那么卷积后的结果

   3.3跨步和填充

  步幅表示我们在卷积的每一步中移动了多少步。默认情况下为1。

  与步长1卷积

  我们可以观察到输出大小小于输入大小。为了保持输出的维度,我们使用填充。填充是将0对称地加到输入矩阵的过程。在以下示例中,额外的灰色块表示填充。它用于使输出的尺寸与输入的尺寸相同。

  假设p是填充。

  最初(没有填充)

  填充后

  填充后

  如果我们在(N 2p)x(N 2p)输入矩阵中应用滤波器F x F并进行填充,那么我们将得到输出矩阵(N 2p-F 1)x(N 2p-F 1)的维数。我们知道,应用填充后,我们将获得与原始输入维数相同的维数(NN)。所以我们有,

  等式(3)清楚地表明,填充取决于滤波器的大小。

   4.CNN中的层CNN中有五个不同的层

  输入层Convo层(Convo ReLU)收集层全连接(FC)层soft max/逻辑层输出层不同层的CNN

   4.1输入层

   CNN中的输入层应该包含图像数据。如前所述,图像数据由三维矩阵表示。你需要把它改造成一列。假设您有一个大小为28 x 28=784的图像,那么您需要在输入之前将其转换为784 x 1。如果有一个“M”训练样本,那么输入的维数将是(784,M)。

   4.2.卷积层

  卷积层有时被称为特征提取层,因为图像的特征是在这一层提取的。如前所述,将图像的一部分连接到卷积层进行卷积运算,计算感受野(是输入图像的局部区域,与滤波器大小相同)与滤波器之间的点积。结果是输出的单个整数。然后,我们将滤波器移动到同一输入图像的下一个接受域,并进行相同的操作。我们将一次又一次地重复同样的过程,直到我们完成整个图像。输出将成为下一层的输入。

  卷积层还包含ReLU激活,使所有负值为零。

   4.3.游泳池层

  池层用于减少卷积输入图像的空间体积。它用于两个卷积层之间。如果我们在没有池或最大池的情况下在Convo层之后应用FC,那么计算起来会更昂贵,我们不想要它。,最大池化只是输入图像空间体积的唯一方式。在上面的例子中,我们在单一深度切片中应用了maxpooling,stride是2。你可以看到44维的输入减少到22维。

  池层中没有参数,它有两个超级参数,——Filter(F)和Stride(S)。

  ,如果我们有输入维数W1 x H1 x D1,那么

   W2=(W1-F)/S 1

   H2=(H1-F)/S 1

   D2=D1

  其中W2、H2和D2是输出的宽度、高度和深度。

   4.4.全连接层

  一个完全连接的层包括权重、偏差和神经元。它将一层中的神经元连接到另一层中的神经元。它用于通过训练对不同种类的图像进行分类。

   4.5.Softmax /逻辑层

  最大或逻辑层是CNN的一层。它位于FC层的末端。Logistic用于二分类,softmax用于多分类。

   4.6.输出层

  输出层包含一个标签,其形式为单热编码。

  现在你对CNN有了很好的了解。让我们在Keras实现CNN。

   5.Keras实施

  我们将使用CIFAR-10数据集来构建CNN图像分类器。CIFAR-10数据集有10个不同的标签。

  汽车,鸟,猫,鹿,狗,青蛙,马,船,卡车,它有50,000个训练数据和10,000个测试图像数据。CIFAR-10中的图像大小为32 x 32 x 3。它带有Keras库。

  模型可视化

  如果你使用Google colaboratory,那么确保你使用的是GPU。检查GPU是否已打开。请尝试下面的代码。

  输出

  ,导入所有必需的模块和库。

  然后加载数据集,将其分成训练集和测试集。

  我们将在CIFAR-10中输出训练样本形状、测试样本形状和课程总数。我们之前看了10节课。例如,我们将输出来自训练集和测试集的两个样本图像。

  输出

  找到输入图像的形状,然后将其调整为训练集和测试集的输入格式。之后,将所有数据类型改为浮点数。

  通过将训练数据和测试数据除以255,将数据归一化为0-1,然后使用to_catagorical()函数将所有标签转换为单个热向量。

  使用单个热编码来显示类别标签的变化。

  输出

  现在创建我们的模型,Convo层将被加载,然后层将被合并。然后我们将连接密集(FC)层来预测类。将输入数据输入到第一个卷积层,该卷积层的输出作为下一个卷积层的输入,以此类推。,数据被发送到FC层,以尝试预测正确的标签。

  使用rmsprops optimizer初始化所有参数并编译我们的模型。优化器有很多,比如adam,SGD,GradientDescent,Adagrad,Adadelta,Adamax,可以随意尝试。批量为256,50个纪元。

   Model.summary()用于查看模型中每一层的所有参数和形状。您可以观察到总参数为276,138,总可训练参数为276,138。非训练参数为0。

  输出

  在编译好我们的模型之后,我们将通过fit()方法训练我们的模型,然后对它进行评估。

  输出

  经过训练,我们得到了83.86%的准确率和75.48%的验证准确率。这个结果还是不错的。

  结论恭喜!通过了解Keras的基本概念,您已经在Keras中建立了一个卷积神经网络。你可以通过改变它的超级参数来试验它!

  编译和制作

  更多关于卷积神经网络中池化层的作用(卷积层与池化层)的请关注本站。

Copyright@2015-2025 www.xingbingw.cn 性病网版板所有