| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 第七章 卷积神经网络1(理论讲解) -> 正文阅读 |
|
[人工智能]第七章 卷积神经网络1(理论讲解) |
文章目录本片文章将讲述卷积 神经网络(Convolutional Neural Network,CNN)。CNN被用于图像识别、语音识别等各种场合,在图像识别的比赛中,基于深度学习的方法几乎都以CNN为基础。 7.1架构CNN和前面介绍神经网络有很多相似的地方,不同的是CNN中新出现了卷积层(Convolution层)和池化层(Pooling层)。 首先了解一下全连接层:相邻层的所有神经元之间都有连接,在前面的文章中使用的是Affine层实现了全连接层如果使用这个Affine层,一个5层的全连接的神经网络就可以通过下图所示的网络结构来实现。 那么如果使用CNN,则网络结构图如下: 【注】由上图知,CNN中新增了Convolution层和Pooling层。CNN的层的连接顺序是“Convolution - ReLU -(Pooling)” (Pooling层有时会被省略)。这可以理解为之前的“Affi ne - ReLU”连接被替换成了“Convolution -ReLU -(Pooling)”连接。 另外,靠近输出的层中使用了之前的“Affi ne - ReLU”组合。此外,最后的输出层中使用了之前的“Affi ne -Softmax”组合。这些都是一般的CNN中比较常见的结构。 7.2卷积层CNN中出现了一些特有的术语,比如填充、步幅等。此外,各层中传递的数据是有形状的数据(比如,3维数据),这与之前的全连接网络不同。 7.2.1优点在前面使用的全连接层(Affine层),在全连接层中,相邻层的神经元全部连接在一起,输出的数量可以任意决定。 7.2.1.1全连接存在的问题:数据的形状被忽视,比如,输入数据是图像时,图像通常是高、长、通道方向上的3维形状。但是,向全连接层输入时,需要将3维数据拉平为1维数据。 对于3维形状的图像,这个形状中应该含有重要的空间信息。比如,空间上邻近的像素为相似的值、RBG的各个通道之间分别有密切的关联性、相距较远的像素之间没有什么关联等,3维形状中可能隐藏有值得提取的本质模式。但是,因为全连接层会忽视形状,将全部的输入数据作为相同的神经元(同一维度的神经元)处理,所以无法利用与形状相关的信息。 7.2.1.2卷积的优点:卷积层可以保持形状不变。当输入数据是图像时,卷积层会以3维数据的形式接收输入数据,并同样以3维数据的形式输出至下一层。 在CNN中,有时将卷积层的输入输出数据称为特征图(featuremap)。其中,卷积层的输入数据称为输入特征图(input feature map),输出数据称为输出特征图(output feature map)。 7.2.2卷积运算卷积层进行的处理就是卷积运算,卷积运算就相当于图像处理中的"滤波器运算",下面举例来说明。 【注】表示卷积运算, 在这个例子中,输入数据是有高长方向的形状的数据,滤波器也一样,有高长方向上的维度。假设用(height, width)表示数据和滤波器的形状,则在本例中,输入大小是(4, 4),滤波器大小是(3, 3),输出大小是(2, 2)。另外,有的文献中也会用“核”这个词来表示这里所说的“滤波器”。 下面来说明计算顺序,如下图 【注】计算方法:对于输入数据,卷积运算以一定间隔滑动滤波器的窗口并应用。这里所说的窗口是指上图中灰色的3 × 3的部分。如上图所示,将各个位置上滤波器的元素和输入的对应元素相乘,然后再求和(有时将这个计算称为乘积累加运算)。然后,将这个结果保存到输出的对应位置。将这个过程在所有位置都进行一遍,就可以得到卷积运算的输出。 在全连接的神经网络中,除了权重参数,还存在偏置。CNN中,滤波器的参数就对应之前的权重。并且,CNN中也存在偏置。如下图 【注】偏置通常只有1个(1 × 1) (本例中,相对于应用了滤波器的4个数据,偏置只有1个),这个值会被加到应用了滤波器的所有元素上。 7.2.3填充在进行卷积层的处理之前,有时要向输入数据的周围填入固定的数据(比如0等),这称为填充(padding),例如下图。 【注】卷积运算的填充处理:向输入数据的周围填入0(图中用虚线表示填充,并省略了填充的内容“0”) 通过填充,大小为(4, 4)的输入数据变成了(6, 6)的形状。然后,应用大小为(3, 3)的滤波器,生成了大小为(4, 4)的输出数据。 **使用填充原因:**为了调整输出的大小。因为如果每次进行卷积运算都会缩小空间,那么在某个时刻输出大小就有可能变为1,导致无法再应用卷积运算。为了避免出现这样的情况,就要使用填充。 7.2.4步幅应用滤波器的位置间隔称为步幅(stride)。前面的例子中步幅都是1,如果将步幅设为2,如下图。 【注】对输入大小为(7, 7)的数据,以步幅2应用了滤波器。通过将步幅设为2,输出大小变为(3, 3)。步幅可以指定应用滤波器 **步幅的计算公式:**假设输入大小为(H, W),滤波器大小为(FH, FW),输出大小为(OH, OW),填充为P,步幅为S。则 例:输入大小:(4, 4);填充:1;步幅:1;滤波器大小:(3,3) 问题:对于上述的公式,当输出大小无法除尽时(结果是小数时),需要采取报错等对策。根据深度学习的框架的不同,当值无法除尽时,有时会向最接近的整数四舍五入,不进行报错而继续运行。 7.2.5三维卷积运算对于前面的卷积运算的例子都是以有高、长方向的2维形状为对象的,但是,图像是3维数据,除了高、长方向之外,还需要处理通道方向。 通过下图来举例说明三维卷积运算: 【注】由图可知,对于三通道的图像,在纵深方向(通道方向)上特征图增加了,通道方向上有多个特征图时,会按通道进行输入数据和滤波器的卷积运算,并将结果相加,从而得到输出。 下图为计算过程 【注】需要注意的是,在3维数据的卷积运算中,**输入数据和滤波器的*通道数*要设为相同的值。 7.2.6结合方块思考将数据和滤波器结合长方体的方块来考虑,3维数据的卷积运算会很容易理解。 例:通道数为C、高度为H、长度为W的数据的形状可以写成(C, H, W)。 ? 通道数为C、滤波器高度为FH(FilterHeight)、长度为FW(Filter Width)时,可以写成(C, FH, FW)。 在上图中,数据输出是1张特征图。所谓1张特征图,换句话说,就是通道数为1的特征图。那么,如果要在通道方向上也拥有多个卷积运算的输出,该怎么做呢?为此,就需要用到多个滤波器(权重),见下图 【注】上面还是一张图片,只是加了多次卷积运算 通过应用FN个滤波器,输出特征图也生成了FN个。如果将这FN个特征图汇集在一起,就得到了形状为(FN, OH, OW)的方块。将 CNN也存在偏置,计算如下图。 【注】对于1X1的偏置,不同形状的方块相加时,可以基于NumPy的广播功能轻松实现 7.2.7批处理神经网络的处理中进行了将输入数据打包的批处理。 例:对于网络间传递的4维数据,就是按(batch_num, channel, height, width)的顺序保存的数据,计算见下图 7.3池化层7.3.1计算方式池化是缩小高、长方向上的空间的运算。如下图 上图是按步幅2进行2 × 2的Max池化时的处理顺序。“Max池化”是获取最大值的运算,“2 × 2”表示目标区域的大小。如图所示,从2 × 2的区域中取出最大的元素。此外,这个例子中将步幅设为了2,所以2 × 2的窗口的移动间隔为2个元素。另外,一般来说,池化的窗口大小会和步幅设定成相同的值。比如,3 × 3的窗口的步幅会设为3,4 × 4的窗口的步幅会设为4等。 7.3.2特征.1、没有要学习的参数 池化层和卷积层不同,没有要学习的参数。池化只是从目标区域中取最大值(或者平均值),所以不存在要学习的参数。 2、通道数不发生变化 经过池化运算,输入数据和输出数据的通道数不会发生变化。 例:计算式通道数是独立的 3、对微小的位置变化具有鲁棒性(健壮) 输入数据发生微小偏差时,池化仍会返回相同的结果。因此,池化对输入数据的微小偏差具有鲁棒性。比如,3 × 3的池化的情况下,如下图所示,池化会吸收输入数据的偏差(根据数据的不同,结果有可能不一致)。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 8:13:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |