首页 > 其他分享 >【10分钟掌握深度学习5】卷积神经网络4

【10分钟掌握深度学习5】卷积神经网络4

时间:2024-03-23 19:58:41浏览次数:35  
标签:10 输出 卷积 图像 像素 特征 神经网络 深度

5.14 采用宽卷积的好处有什么?

5.14.1 窄卷积和宽卷积

对于窄卷积来说,是从第一个点开始做卷积,每次窗口滑动固定步幅。比如下图左部分为窄卷积。那么注意到越在边缘的位置被卷积的次数越少。于是有了宽卷积的方法,可以看作在卷积之前在边缘用0补充,常见有两种情况,一个是全补充,入下图右部分,这样输出大于输入的维度。另一种常用的方法是补充一部0值,使得输出和输入的维度一致。这里文中给了一个公式 。这里npadding在全补充里是filter-1,在输入输出相等时,就要主要奇偶性了,注意到卷积核常为奇数。

在这里插入图片描述

5.14.2 为什么采用宽卷积?

通过将输入边角的值纳入到滑窗中心进行计算,以便损失更少的信息。

5.15 卷积层输出的深度与哪个部件的个数相同?

输出深度(通道)与卷积核(过滤器)的个数相等。

5.16 如何得到卷积层输出的深度?

参数共享:在卷积层中使用参数共享是用来控制参数的数量。假设在第一个卷积层就有55x55x96=290,400个神经元,每个有11x11x3=364个参数和1个偏差。将这些合起来就是290400x364=105,705,600个参数。单单第一层就有这么多参数,显然这个数目是非常大的。

作一个合理的假设:如果一个特征在计算某个空间位置(x,y)的时候有用,那么它在计算另一个不同位置(x2,y2)的时候也有用。基于这个假设,可以显著地减少参数数量。换言之,就是将深度维度上一个单独的2维切片看做深度切片(depth slice),比如一个数据体尺寸为[55x55x96]的就有96个深度切片,每个尺寸为[55x55]。在每个深度切片上的神经元都使用同样的权重和偏差。在这样的参数共享下,例子中的第一个卷积层就只有96个不同的权重集了,一个权重集对应一个深度切片,共有96x11x11x3=34,848个不同的权重,或34,944个参数(+96个偏差)。

w_conv1=weight_variable([5,5,1,32])

可以看出,上面的32表示的是卷积层输出的深度,因为大家都明白width和height都可以通过公式计算得到,但是很多文献都没有告诉深度是如何得到的,下面是我的认识:

  1. 因为这个深度是没有公式可以计算出来的,因为深度是一个经验值,如上面代码的32 ,其实是一个经验值,是通过调整参数发现32是一个最合适的值,可以得到最好的准确率,但是不同的图像的深度是不一样的。
  2. 这个深度表示用了多少个卷积核,下面这个图可以说明一下:

在这里插入图片描述

上图就可以很有效的说明 :卷积层输出的深度==卷积核的个数。

5.17 激活函数通常放在卷积神经网络的哪个操作之后?

通常放在卷积层之后。

5.18 如何理解最大池化层有几分缩小?

池化层:对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征。

池化操作一般有两种,一种是Avy Pooling,一种是max Pooling。

在这里插入图片描述

同样地采用一个2*2的filter,max pooling是在每一个区域中寻找最大值,这里的stride=2,最终在原特征图中提取主要特征得到右图。

注1:(Avy pooling现在不怎么用了,方法是对每一个22的区域元素求和,再除以4,得到主要特征),而一般的filter取22,最大取3*3,stride取2,压缩为原来的1/4.
注2:这里的pooling操作是特征图缩小,有可能影响网络的准确度,因此可以通过增加特征图的深度来弥补。

5.19 理解图像卷积与反卷积

5.19.1 图像卷积

首先给出一个输入输出结果

在这里插入图片描述

那他是怎样计算的呢?

卷积的时候需要对卷积核进行180的旋转,同时卷积核中心与需计算的图像像素对齐,输出结构为中心对齐像素的一个新的像素值,计算例子如下:

在这里插入图片描述

这样计算出左上角(即第一行第一列)像素的卷积后像素值。

给出一个更直观的例子,从左到右看,原像素经过卷积由1变成-8。

在这里插入图片描述

通过滑动卷积核,就可以得到整张图片的卷积结果

在这里插入图片描述

5.19.2 图像反卷积

这里提到的反卷积跟1维信号处理的反卷积计算是很不一样的,FCN作者称为backwards convolution,有人称Deconvolution layer is a very unfortunate name and should rather be called a transposed convolutional layer. 我们可以知道,在CNN中有con layer与pool layer,con layer进行对图像卷积提取特征,pool layer 对图像缩小一半筛选重要特征,对于经典的图像识别CNN网络,如IMAGENET,最后输出结果是1X1X1000,1000是类别种类,1x1得到的是。FCN作者,或者后来对end to end研究的人员,就是对最终1x1的结果使用反卷积(事实上FCN作者最后的输出不是1X1,是图片大小的32分之一,但不影响反卷积的使用)。

这里图像的反卷积与full卷积原理是一样的,使用了这一种反卷积手段使得图像可以变大,FCN作者使用的方法是这里所说反卷积的一种变体,这样就可以获得相应的像素值,图像可以实现end to end。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这里说另外一种反卷积做法,假设原图是33,首先使用上采样让图像变成77,可以看到图像多了很多空白的像素点。使用一个33的卷积核对图像进行滑动步长为1的valid卷积,得到一个55的图像,我们知道的是使用上采样扩大图片,使用反卷积填充图像内容,使得图像内容变得丰富,这也是CNN输出end to end结果的一种方法。韩国作者Hyeonwoo Noh使用VGG16层CNN网络后面加上对称的16层反卷积与上采样网络实现end to end 输出,其不同层上采样与反卷积变化效果如下:

在这里插入图片描述

经过上面的解释与推导,对卷积有基本的了解,但是在图像上的deconvolution究竟是怎么一回事,可能还是不能够很好的理解,因此这里再对这个过程解释一下。 目前使用得最多的deconvolution有2种,上文都已经介绍。

  • 方法1:full卷积, 完整的卷积可以使得原来的定义域变大。
  • 方法2:记录pooling index,然后扩大空间,再用卷积填充。

图像的deconvolution过程如下:

在这里插入图片描述

输入:2x2, 卷积核:4x4, 滑动步长:3, 输出:7x7

即输入为2x2的图片经过4x4的卷积核进行步长为3的反卷积的过程

  1. 输入图片每个像素进行一次full卷积,根据full卷积大小计算可以知道每个像素的卷积后大小为 1+4-1=4, 即4x4大小的特征图,输入有4个像素所以4个4x4的特征图
  2. 将4个特征图进行步长为3的fusion(即相加); 例如红色的特征图仍然是在原来输入位置(左上角),绿色还是在原来的位置(右上角),步长为3是指每隔3个像素进行fusion,重叠部分进行相加,即输出的第1行第4列是由红色特阵图的第一行第四列与绿色特征图的第一行第一列相加得到,其他如此类推。

可以看出翻卷积的大小是由卷积核大小与滑动步长决定, in是输入大小, k是卷积核大小, s是滑动步长, out是输出大小 得到 out = (in - 1) * s + k 上图过程就是, (2 - 1) * 3 + 4 = 7

标签:10,输出,卷积,图像,像素,特征,神经网络,深度
From: https://blog.csdn.net/qq_32146369/article/details/136358163

相关文章

  • 100道面试必会算法-09-最大子数组和(初探动态规划)
    100道面试必会算法-09-最大子数组和(初探动态规划)题目一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。示例1:输入:nums=[-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1]的和最大,......
  • 10分钟带你搭建企业级项目工程化模版
    一个集成了Vite+Vue3+Ts+Eslint+Perttier+Husky+Lintstaged+commitlint+commitizen的模版使用vite脚手架搭建vue基本架构Vitepnpmcreatevite//✔Projectname:…test//✔Selectaframework:›Vue//✔Selectavariant:›TypeScript每当我们编码完成时,......
  • 2024年C语言最新经典面试题汇总(1-10)
    C语言文章更新目录C语言学习资源汇总,史上最全面总结,没有之一C/C++学习资源(百度云盘链接)计算机二级资料(过级专用)C语言学习路线(从入门到实战)编写C语言程序的7个步骤和编程机制C语言基础-第一个C程序C语言基础-简单程序分析VS2019编写简单的C程序示例简单示例,VS2019调......
  • EI级!高创新原创未发表!VMD-TCN-BiGRU-MATT变分模态分解卷积神经网络双向门控循环单元融
    EI级!高创新原创未发表!VMD-TCN-BiGRU-MATT变分模态分解卷积神经网络双向门控循环单元融合多头注意力机制多变量时间序列预测(Matlab)目录EI级!高创新原创未发表!VMD-TCN-BiGRU-MATT变分模态分解卷积神经网络双向门控循环单元融合多头注意力机制多变量时间序列预测(Matlab)预测......
  • 力扣HOT100 - 49. 字母异位词分组
    解题思路:排序注意:返回时不能用List,因为List是抽象类,return的必须是List的具体实现,如ArrayListclassSolution{publicList<List<String>>groupAnagrams(String[]strs){Map<String,List<String>>map=newHashMap<>();for(Stringstr......
  • PAT乙级 1062 最简分数 C语言
    最简分数一个分数一般写成两个整数相除的形式:N/M,其中M不为0。最简分数是指分子和分母没有公约数的分数表示形式。现给定两个不相等的正分数N1​/M1​和N2​/M2​,要求你按从小到大的顺序列出它们之间分母为K的最简分数。输入格式:输入在一行中按N/M的格式给出两个......
  • PAT乙级 1055 集体照 C语言
    集体照拍集体照时队形很重要,这里对给定的N个人K排的队形设计排队规则如下:每排人数为N/K(向下取整),多出来的人全部站在最后一排;后排所有人的个子都不比前排任何人矮;每排中最高者站中间(中间位置为m/2+1,其中m为该排人数,除法向下取整);每排其他人以中间人为轴,按身高......
  • PAT乙级 1054 求平均值 C语言
    本题的基本要求非常简单:给定N个实数,计算它们的平均值。但复杂的是有些输入数据可能是非法的。一个“合法”的输入是[−1000,1000]区间内的实数,并且最多精确到小数点后2位。当你计算平均值的时候,不能把那些非法的数据算在内。输入格式:输入第一行给出正整数N(≤100)。随......
  • 3121002754
    这个作业属于哪个课程<软件工程2024-双学位>这个作业要求在哪里<团队作业1——团队展示&选题>这个作业的目标团队协作完成团队展示和选题目录1.团队展示2.选题要求3.团队计划4.团队成员绩效评估方法:1.团队展示1.队名2.队员信息(姓名+学号)陈俊豪3121001738......
  • 在校大学生想从事网络安全,多听老哥几句良言,少挨几顿社会毒打(10年资深安全工程师如是说
    大家好!一直以来都有一些大学生粉丝私聊向我“取经”,可以看得出来很多人对前路多多少少都有些迷茫,我把大家的问题总结了一下,并对每个问题都做了我自己的见解,高频出现的问题有以下5个:1.国内网络安全的薪资是怎么样的?2.网络安全行业真实前景有那么好吗?3.我现在的情况适合做......