简介:第一篇文章介绍了深度学习 - 深度神经网络中最基本和最常见的网络类型,即DNN,该网络源自MLP网络。在丰富的激活功能和反向通信算法的祝福之后,它可以在深层的情况下有效地训练网络,并大大提高了网络的信息表达能力(神经网络模型本质上是复杂的映射功能。网络层的数量增加,它可以适应接近近似值的映射函数越复杂,信息表达能力越强)。
本文继续深入了解卷积神经网络(CNN)的三个主要基石,这是计算机视觉领域中密集的网络架构类别。
Lenet5 -CNN的开幕式
第一部分介绍了DNN网络。从理论上讲,网络层的数量可以接近任何复杂函数,即通用近似定理。但是,在实践过程中,增加网络层的数量也带来了两个问题:一个是,一个较深的网络可能具有梯度消失或梯度分散问题。多重参数为培训数据集和计算资源带来了更多测试。在应用特殊培训数据(例如图像)时,应用DNN时,具有两个维度矩阵结构的像素点数据时需要平坦地拉动一个维度矢量,然后可以用作DNN模型输入 - 实际上丢失了图片像素数据的方向信息,不一定是图像数据的最佳解决方案。
反对这样的研究,卷积神经网络开始并打开了深度学习的新章节。在上一篇文章的文本中,本文介绍了以下方面:
卷积神经网络应为卷积神经网络,称为CNN。在一个句子中,应用了两种类型的卷积过滤器和池层模块的神经网络。显然,CNN网络的焦点是CNN网络的典型网络模块。因此,有必要介绍这两种类型的类型首先。
1.加入过滤器
作为一名专业毕业生,我对卷积术语并不陌生,并且在信号处理课程中处于联系。当然,卷积操作本身应该是数学操作。做两个函数f(x)和g(x)的卷积。实际上,解决了以下几点:
这种卷积数学表达式非常漂亮,但实际上太抽象了。从计算机的视角,连续的功能集成不方便。由于计算机只能接受离散输入,因此上述卷积操作的离散表达是:
当然,上面的形式仅从连续点变为离散形式。值得关注的细节是“*”对于这里的卷积操作符号 - 这也是所有卷积神经网络中使用的卷积操作符号。
那么,如何理解此卷积操作?这是网络上信号处理的移动图片:
补充说明:在上面的卷积操作中,两个函数x()和y()是单位脉冲函数,即值的价值值为1.说,说此卷积具有任何功能和优势,实际上,其在通信处理中的最大价值是改变时间域和频域 - 时间域卷积等于频域卷积,公式表达式为fft(f*g)= fft(f)(f)×fft(g),这里的FFT表达信号处理通常在字段中使用:快速傅立叶变换。换句话说,卷积和乘法构成了时间频域中两个信号的交换操作。
好的,在了解卷积操作及其使用的功能之后,让我们看看它在神经网络中可以拥有哪些应用程序,或者进一步说明应用哪些应用程序应用于图像分类任务的神经网络。
请注意,卷积操作适用于两个函数(连续集成形式),或两个系列序列数据(离散和形式);此外,您可以获得两者的总和,以一一以交错形式获得两者的对帐。并获得新的序列结果。换句话说,两个序列卷积的结果是新序列。有两个问题与用于图像分类的神经网络相对应:
除上述两个问题外,实际上,一个细节也隐藏了:卷积使用“卷发”一词的原因可能是因为卷积操作的两个序列是反向滑动 - 一个在左边,另一个是权利。无论如何,无论是什么方向幻灯片,但是对于像素数据和网络重量,卷积的本质是将两者带到两者。因此,积极的反对是正确的位置,相反的位置也是正确的位置。为什么要滚动?直接积极的是,这还不够吗?当然,这是可能的,因此神经网络中的卷积直接遵守。
在这样的设计卷积操作之后,从混淆到数学中的神经网络的卷积的推导,但也有最后一个调整:数学中的卷积操作是输入两个序列以同时获得一个新的序列,这些序列序列序列序两个序列的长度可能不同。如果将两个序列的长度记录为M和N,则通过卷积获得的新序列长度为M+N-1。两个卷积对象必须保持一致,仅作为卷积输出保留的右手乘法的结果。特别是,单个卷积如下:
在这一点上,真正完成了神经网络中单个卷积操作的解释。总而言之,可以总结为以下几点:
与DNN网络中的神经元结构类似,上述CNN网络中上述单卷积内核的操作应称为神经元。滑动:整个部分的含义包括水平和垂直方向以及多个通道,例如彩色图片的RGB。因此,在图像上进行卷积操作是以下过程:
注意:由一组卷积模板组成的矩阵称为卷积内核。一个卷积核仅作用于单个输入通道。如果第一层中有M通道和后一个输出n通道,则需要M×Nindividual卷积核。除非原始图片输入数据,卷积层提取的每个段落称为特征图。
再次在此处发布DNN的网络体系结构,以便我们可以比较:
与DNN和CNN的两个网络相比,您可以更深入地比较:
本地连接和重量共享是CNN的两个主要功能。这也是两个主要功能。一方面,它大大减少了权重参数的数量。另一方面,提取图像数据的局部特征更容易!
2.池塘
合并层,英语正在汇总。实际上,很难理解为什么很难从英语中理解。有必要在卷积神经网络中设计这样的结构。尽管我个人无法理解此名称的含义,但其功能非常直观且简单 - 如果使用卷积过滤器用于本地功能提取,则池层可以被视为局部特征降低和维度维度 - 维度维度和维度 - 维度维度以及维度和尺寸。
例如,有三种类型的合并层,即MaxPooling,Avggpooling,Minpooling,sumpooling等。前两种更常用。然后MaxPooling将以本地像素为输出。相应的AVGPooling和MinPooling是平均值或最小值,笨拙的值是和谐的。例如:
合并层的功能非常容易理解。那么设计的目的是什么?有两个答案:
在这一点上,借助卷积层和池化层的两个主要模块,您可以使用其所需的卷积神经网络,例如在开始时给出的CNN开放,两个卷积层,两个汇总层和三个完整的连接层。
从数学的卷积操作开始,设计了卷积神经网络的卷积。实际上,在理解卷积的编码后,将发现卷积的计算仍然非常简单。在一个单词中,卷积操作是在卷积核心中使用权重矩阵。过程像素数据需要乘以。
因此,问题是,为什么这种设计有效?换句话说,卷积操作后将提取原始图像数据的功能?这是我要接下来要介绍的内容。
为什么CNN有效,回答此问题的核心是解释为什么卷积操作有效,因为CNN网络中的标志性操作是卷积。
要了解卷积操作的工作原理,这里是对图像的描述,然后以Lenet5为例探索实践。
图片源自李·洪吉(Li Hongyi)教授的深度学习ppt
在上面的图片中,我们可以看到也检测到鸟类的局部特征(喙)。通过使用相同的卷积内核和过滤,通过多个变换,最终鸟的分类任务提供了一个功能。
当然,这只是标志的描述。那实际情况如何?我们选择LENET5竞争对手写作数字分类任务来尝试查看模型如何使用此卷积操作。在这里是由深度学习模型构建的三部曲:Pytorch Learning Series系列教程:我们需要采取什么步骤来构建深层学习模型?
首先是MNIST数据集的准备。您可以使用Torchvision软件包在线下载:
然后,Lenet5的网络模型中有一些经典模型(Torchvision,但由于Lenet5相对简单,因此不在其中)
最后,模型的培训过程:
可以看出,在简短的训练中,该模型在训练集和测试集中取得了良好的精度得分。其中,训练集高达99%或更高。
然后我们的重点是:在LENET5模型中的两个卷积层之后,原始手写号码图片变成了哪种形式?换句话说,您提取了什么特征?
让我们在这里提出两个特殊案例以研究:
案例1:测试集样品0,相应的手写号码7
1-A:原始图片:
1-B:在卷积第一层之后,提取了6个通道的特征图
1-C:在第二层卷积之后,提取16个通道的特征图
案例2:测试集样品1,相应的手写号码2
2-A:原始图片
2-B:在卷积第一层之后,提取了6个通道的特征图
2-C:在第二层卷积之后,提取16个通道的特征图
与两组案例的特定卷积提取结果相比,实际上,它们通常可以看到一些规则。例如,卷积第一层之后的第一个和第二个频道更加注意手写号码的角功能(轮廓),而第一个4和第五频道功能图会注意手写数字的垂直功能,并分别提取左右边缘的特征;同样,第三和第六通道的特性集中在提取手写数字的水平特征上,并分别提取上边缘和下边缘特征:
在此之后的第二卷积累中,它用于提取更多细节和丰富的功能。您可以自己比较它。为何您可以在提取这些本地特征后完成手写号码的识别 - 为0,是1等。对于由7笔笔触组成的数字模板,当外环完全明亮并且中间不亮时,右边为1,另一个是不亮的。图片中每个部分的明亮和黑暗情况根据值的值。
当然,这个示例只是一个简单的示例。模型的实际处理逻辑将比这要复杂得多 - 但要依靠模型自行训练和学习。
上面,我们首先通过识别鸟类的口腔特征的直观示例来描述CNN网络中卷积操作的作用,然后在MNIST手写数字数据集中使用LENET5模型的实际情况来研究和分析它,确认这一确认这一问题的理解。因此,CNN模型的核心是核心是 - 斜线操作具有提取图像数据的局部特征的能力。
此外,带有池层的卷积操作实际上具有更强大的效果:包括图像望远镜非降级,旋转不变性等。这是普通DNN没有的能力,并且不再扩展。
CNN的原理和应用已在上一个图像数据中引入了一个示例。当然,图像数据确实是CNN网络中最好的场景。
除了图像数据外,随着近年来研究的进展,CNN实际上已经取得了突破并在更多领域中出现,例如::::
总而言之,最适用的场景以卷积和汇总操作为核心是图像数据,也可以将其促进到需要提取本地特征的其他方案。
最后,在CNN网络中简要介绍两个关键单元:卷积模块和池模块,Pytorch中的基本用途。
1.卷积模块:Conv1d,Conv2D,Conv3d
pytorch中跨度模块主要包括3个,即1维卷积Conv1d,2二维卷积Conv2D和3维卷积Conv3d。在themodule中;Conv1d可用于定时数据中的卷积,而Conv3D尚未暴露。
第一个是类的初始化参数:
依次解释:
填充= 1,大步卷积= 2
扩张= 1空卷积
在卷积操作上,步幅的两个参数与扩张之间的差异。
然后是Conv2D.Conv2d的输入和输出数据可以被视为特殊的神经网络层,因此它实际上是用另一种张量来转换一个输入张量。输入和输出张量的大小如下:如下:
也就是说,输入和输出张量主要是图像通道数的变化。图像的高度和宽度取决于内核四个参数,填充,大步和扩张的综合作用。这里没有具体的计算公式。
2.块化模块:maxpool1d,maxpool2d,maxpool3d
合并模块主要具有Pytorch中最大的合并和平均池化,并且每个合并都可以细分为一个维度,两个维度和三维和三维池层。
可以看出,池模块的初始化参数与卷积模块中的初始化参数有共同点,包括4个参数的设计,例如内核,步幅,填充,填充和扩张。在每个通道上的数据大小的维度上,输入和输出数据的通道数保持不变,这只是大小的变化,此处不再给出相应的计算公式。
以上是卷积神经网络的一些介绍。从卷积操作的起源到对卷积提取的局部特征的理解,最后到Pytorch的模块,我希望能帮助读者。
原始:https://juejin.cn/post/7094622424586518536