| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 卷积与池化过程维度尺寸变化与一些名词整理 -> 正文阅读 |
|
[人工智能]卷积与池化过程维度尺寸变化与一些名词整理 |
? 之前整理过全连接层的前向传播过程中一些权重参数的维度。这篇文章整理一下带有卷积与池化的神经网络。还是直接给一个例子,从例子出发把各个方面梳理一下。 ? 以AlexNet为例(如下图): 卷积? 卷积的作用在于提取特征。可以用不同的卷积核提取不同层次的特征 ? 一般用到卷积和池化的网络都是用于图像任务,我们的输入一般就是一个三通道图像,比如上图中输入图像的尺寸为227*227*3。 ? 在上图也就是第一步卷积中,对于输入尺寸为227*227*3的图像,虽然图中写了卷积核的尺寸是11*11吗?但具体来说,是11*11*3,因为输入图像有三个通道!卷积核深度要和输入图像的深度保持一致。同一个卷积核上的三个通道的并不相同,它们分别去和输入图像的三个通道进行卷积操作,因为得到的结果尺寸必然相同,将三个结果相加就得到了初步卷积的结果了。此外,每个卷积核还带有一个偏置b,因此最终得到的输出为output上各个值都+b,这就是这一步卷积的最终结果。 ? 如图,一个卷积核的三个通道分别于输入图像三个通道进行卷积,并将三个结果相加,再与偏置1相加,就可以得到这个三通道卷积核对应的深度为1的特征层了。 ? 除此之外,在这一步卷积过程中,因为我们得到了96个特征层(图中写了55*55*96),所以可以推断在这一步当中使用了96个卷积核。结合上面卷积核的尺寸,也就是说,在这一步卷积过程中,总共使用了96个大小为11*11*3的卷积核。 再强调一下几个重要的点: 1.卷积核深度=输入图像深度。比如输入图像是3通道的,那么这个卷积核的深度也是3,但这只是1个卷积核。 2.卷积层输出的深度(也就是feature map的个数)=卷积核个数。一个卷积核(不管它是多深)只能得到一个深度为1的输出(计算方式上面讲了)。 Padding??如图,在卷积之前,我们在输入特征图的周围添加值为0的点(白色虚线框框),就是最常见的Padding。 ? Padding其实就是一种边缘填充,为了减轻“越往边界处的点被计算的次数越少”这个问题,在图像最外面加一圈0,就可以增加边界点被利用的次数。一定程度上弥补边界信息缺失的问题。并且因为添加的是0,所以算出来不会对结果产生影响。也叫做Zero-padding。 卷积结果的尺寸变化? 假设卷积前图像高H1,宽W1; ? Fh表示滤波器Filter的高,Fw表示滤波器Filter的宽; ? S为stride表示滑动窗口的步长;P为padding表示补了几圈0。 ? 卷积后特征图高H2,宽W2,则有如下公式: ? 做个小补充:如果要让卷积后尺寸不变,我们另H1=H2,W1=W2? 解方程很容易有结论: ? 比如对于下面找个卷积过程,我们来验证一下(这里没有进行padding,P=0): ? 从图中可知H1=W1=227;步长s告知=4;滤波器宽高Fh=Fw=11;H2=W2=55(用来验证)。因此有: ? H2 = W2 =(227-11+2*0)/4 + 1 = 55 符合已知。 权值共享????卷积过程中的“权值共享”是一个比较常见的概念。其实这个我们已经知道了,我们用一个卷积核去遍历游走输入图像,那么这个filter里的数就是权重,并且它是不会变的,因此图像中的每个地方都被同样的filter扫描,就是共享。 ? 举个例子,还是拿这一步卷积来说明: ? 我们已经知道了在这一步过程当中共有96个大小为11*11*3的卷积核,每个卷积核又都还有一个偏置参数b。所以共需要96*11*11*3+96 = 34944个参数,这些参数权值共享,比全连接层要减少很多参数。(假如说这里我们用全连接层去做,w层共有227*227*3*55*55*96个参数,再加上55*55*96个偏置项,共44892355200个参数。) 可以发现,通过卷积(的权值共享),我们极大地减少了参数的个数。 池化? ?池化操作的目的在于降维,进一步缩小参数量。最常用的就是max pooling,保留最大的特征值。池化核也可以定义大小和步长,类似地,池化前后的尺寸变化公式也和卷积一样。 最后要通过全连接层得到最终结果? 卷积池化之后,要得到最终预测结果,中间还需要进行全连接层。全连接层无法连接“带形状”的输入,所以我们还是需要将其打平(转化成一个一维的向量),将其变成“一列神经元”去处理。 一些名词解释? feature map 一般指的是卷积网络里面的卷积层的输出,一层就是一个feature map。 ? Filter、kernel是一个意思,都是指卷积核。 ? 数一个神经网络有几层,带参数计算的才算一层。因此卷积层算一层。像激活函数以及池化并没有什么参数,所以不算层数。全连接层有参数,也算一层。 ? 这篇主要总结了一下卷积池化维度参数相关的细节吧,有的以前自己也是比较模糊,现在就清楚了。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/26 18:22:15- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |