技术标签: ParNet 深度学习 人工智能 # CNN 神经网络
如有错误,恳请指出。
paper:NON-DEEP NETWORKS
code:https://github.com/imankgoyal/NonDeepNetworks
摘要:
深度是深度神经网络的标志,但深度越大意味着顺序计算越多延迟也越大。这就引出了一个问题——是否有可能构建高性能的“非深度”神经网络?为了做到这一点,我们使用并行子网,而不是一层接着一层堆叠,且成功实现。
作者实现了一个12层的网络结构实现了top-1 accuracy over 80%on ImageNet的效果。分析网络设计的伸缩规则,并展示如何在不改变网络深度的情况下提高性能。
人们普遍认为,大深度是高性能网络的重要组成部分,因为深度增加了网络的表征能力,并有助于学习越来越抽象的特征。但是大深度总是必要的吗?这个问题值得一问,因为大深度并非没有缺点。更深层次的网络会导致更多的顺序处理和更高的延迟;它很难并行化,也不太适合需要快速响应的应用程序。
为此,作者进行了研究提出了ParNet (Parallel Networks),在一定程度上可以与SOTA进行比较,但是使用的层数只有12层。ParNet的一个关键设计选择是使用并行子网,不是按顺序排列层,而是在并行的子网络中排列层。
ParNet的子网结构中,除了开始和结束,子网之间没有连接。这使得可以在保持高精度的同时减少网络的深度,而且平行结构不同于通过增加一层神经元的数量来“扩大”一个网络。而由于具有并行的子结构,ParNet可以在多个处理器之间有效地并行化。
ParNet可以被有效的并行化,并且在速度和准确性上都优于resnet。注意,尽管处理单元之间的通信带来了额外的延迟,但还是实现了这一点。如果可以进一步减少通信延迟,类似parnet的体系结构可以用于创建非常快速的识别系统。
不仅如此,ParNet可以通过增加宽度、分辨率和分支数量来有效缩放,同时保持深度不变。作者观察到ParNet的性能并没有饱和,而是随着计算吞吐量的增加而增加。这表明,通过进一步增加计算,可以实现更高的性能,同时保持较小的深度(~ 10)和低延迟。
ParNet与一些backbone的比较:
作者的主要贡献:
1)首次证明,深度仅为12的神经网络可以在非常有竞争力的基准测试中取得高性能(ImageNet上80.7%)
2)展示了如何利用ParNet中的并行结构进行快速、低延迟的推断
3)研究了ParNet的缩放规则,并证明了恒定的低深度下的有效缩放
已有大量的研究证实了深层网络的优点,具有sigmoid激活的单层神经网络可以以任意小的误差近似任何函数,但是需要使用具有足够大宽度的网络。而要近似函数,具有非线性的深度网络需要的参数要比浅层网络所需要的参数少,而且在固定的预算参数下,深度网络的性能优于浅层网络,这通常被认为是大深度的主要优势之一。
但是在这样的分析中,先前的工作只研究了线性顺序结构的浅层网络,不清楚这个结论是否仍然适用于其他设计。在这项工作中,作者表明浅层网络也可以表现得非常好,但关键是要有并行的子结构。
增加深度、宽度和分辨率可以有效地缩放卷积网络。而在在保持深度不变和较低的情况下,可以通过增加分支数量、宽度和分辨率来有效地扩展ParNet。
ParNet由并行的子结构组成,以不同的分辨率处理特征。作者把这些平行的子结构称为流。来自不同流的特征在网络的后期阶段被融合,这些融合的特征用于下游任务。ParNet的结构如图所示:
在RepVGG中提出了结构重参数化的思想,简单来说就是可以将3x3卷积,1x1卷积两个分支通过代数的处理变成另外的一个3x3的卷积操作。
作者就是借鉴了Rep-VGG的初始块设计,并对其进行修改,使其更适合的非深度架构。但一个只有3×3卷积的非深度网络的挑战是感受野相当有限。为此,作者对结构进行了改进,如图所示:
使用了一个Skip-Squeeze-Excitation的设计,这是应用在旁边的跳跃连接和使用一个单一的全连接层,这种设计有助于提高性能。作者将上图的block称为RepVGG-SSE。
另外一个问题是ImageNet这样的大规模数据集,非深度网络可能没有足够的非线性,限制了它的表征能力。因此,作者用SiLU代替ReLU激活。
RepVGG-SSE block的输入与输出的大小是相同的,此外,ParNet结构中还有Downsampling block与fusion block。
Downsampling block的作用是降低分辨率,增加宽度,以实现多尺度处理。fusion block的作用是合并来自多个分辨率的信息。
具体结构如图所示:
用于ImageNet数据集的ParNet模型如图所示:
初始层由一系列的Downsampling blocks组成,Downsampling blocks中的2、3和4的输出分别被馈送到流1、2和3中,其中3个流是最优流数,如表格所示:
每个流都由一系列的RepVGG-SSE blocks组成来处理出不同分辨率的特征图,然后来自不同流的特征会通过Fusion blocks进行concat拼接。最后通过11层的一个Downsampling blocks,这层的下采样通道数会宽一点,具体的网络结构参数如下图:
ps:在CIFAR中,图像分辨率较低,网络架构与ImageNet略有不同。首先作者用RepVGGSSE块替换深度1和2的Downsampling块。为了减少最后一层的参数数量,将最后一个宽度较大的Downsampling块替换为更窄的1×1卷积层。此外还通过从每个流中删除一个块并添加深度为3的块来减少参数的数量。
使用神经网络,可以观察到通过扩大网络规模可以获得更高的精度。为此,作者保持深度不变,通过增加宽度、分辨率和流的数量来扩大ParNet。
对于CIFAR10和CIFAR100,作者增加了网络的宽度,同时保持分辨率为32,流的数量为3。对于ImageNet,作者通过改变所有三个维度来进行实验。
目前的5纳米光刻工艺正在接近0.5纳米尺寸的硅晶格,进一步增加处理器频率的空间有限。这意味着更快的神经网络推断必须来自并行计算。
训练时的消融实验:
结构的消融实验:
与其他backbone在 CIFAR10与CIFAR100的对比:
总结:
作者提出了浅层网络能否达到深层网络同样的效果,提出了浅网多分支(流融合)的思想,结合RepVGG的结构重参数化,在训练与推断过程中适当的解耦,使得浅网的性能达到了一定的可比性。
一、招聘网站boss直聘:https://www.zhipin.com/ (聊天约工作)智联:综合类招聘(https://www.zhaopin.com/,每天投递量没有限制)拉沟网:垂直类招聘(https://www.lagou.com/,每天投递量有限制25-30家)猎聘:会有猎头找到100offer:高端招聘(10以上工作经验,高管,技术总监)前程无忧:综合类招聘中华英才网:综合类招聘二、简历基本构成基本信息:姓名:xx 性别:男毕业院校:xx学校/xxx专业工作年限:3年应
基于ubuntu16.04,本人在更换一次系统下载源后,误操作进行了内核升级。出现NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver 的报错
七、转置行列互换行标题会消失八、反转行——上下颠倒九、透视一维变二维不要聚合十、逆透视二维变一维将标题降到第一行十一、分组依据将数据按照某一列或几列进行汇总多列分组依据:大组套小组;用来分组的最后一列结果一定没有重复对于要聚合的列:求和;计数;平均;最大;最小所有行:展开——展开原有字段;聚合——将字段按照某计算聚合分组依据后可以再次分组依据十二、添加列添加自定义列:添加文本;添加计算手段;使用&拼接添加条件列:根据条件判断,返
效果图如下:前提:在添加了网络权限及导入了okhttp,okio两个jar包后开始操作,老规矩,在最后有源码。1.定义一个handler为全局变量,并将其实例化。2.实例化一个0khttp,传入网址,实例化一个call的对象{其中有2个方法,在onResponse方法中声明一个传递信息的Message,然后再进行判断,并将数据传出去}。3.回到第一步,将指令和消息放入,并加载图片。...
信息技术学科教学具有很强的实践性,学生可以综合应用自己所学到的各学科的知识和方法指挥计算机工作,来实现自己的创意,达到自己想象的境界,完成自己的各项任务。在这个实践过程中,可以培养学生的观察能力、想象能力、审美能力、逻辑思维能力、以抽象化的形式描述问题的能力、规划能力、创造能力、分析问题和解决问题的能力、动手能力、与别人合作的能力以及自信、自立、自强的精神,等等,使学生素质得到全面的提高。随着经济...
黑色字体为原本答案,蓝色字体修改补充了复习题组「66-70/66-70/14/14」一名词解释71.压力测试在软件工程中,压力测试是对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。压力测试是通过不断向被测系统施加“压力”,测试系统在压力情况下的性能表现,考察当前软硬件环境下系统所能承受的最大负荷并帮助找出系统瓶颈所在,也就是我...
相关分析(correlation analysis)研究两个或两个以上随机变量之间相互依存关系的方向和密切程度的方法。线性相关关系主要采用皮尔逊(Pearson)相关系数r来度量连续变量之间线性相关强度;r>0,线性正相关;r...
1.概念 1.swagger是什么 一个自动生成接口文档的框架 可以将项目所有的接口在一个UI界面上展示出来,表明接口的功能,所需参数(类型等要求),输入参数就可以得到结果(状态码和返回值)2.为什么需要swagger 前后端分离开发时,前端人员和后端人员很可能无法做到即时协商 解决方案: 之前 1.共享接口文档并及时维护 2.后端提供接口,前端用postman测试 现在 1.swagg...
CloudFront 是 AWS 提供的 CDN 服务,在 CloudFront 中如何令 CDN 边缘服务器的缓存文件失效呢,请依照以下步骤操作。1. 点击 Distributions,选择你的 CDN 项目。2. 选择失效标签Invalidations。3. 创建失效项目,填写失效文件的相对路径,支持模糊匹配。 ...
Flink客户端操作命令1.基于Yarn模式提交任务使用平台jar包测试:./bin/flink run -m yarn-cluster -p 2 ./examples/batch/WordCount.jar \--input hdfs:///user/wupq/words.txt \--output hdfs:///user/wupq/output2/2020122301提交自己编写代码:./bin/flink run -m yarn
关于spring项目报错:Could not open ServletContext resource[/WEB-INF/applicationContext.xml]的解决方案。
VRP基础快捷键 CTAL+A 把命令光标移动到当前命令行的最前端 CTAL+C 停止当前命令的运行 CTAL+Z 回到用户视图 CTAL+] 终止当前连接或切换连接 Backspace 删除光标左边的第一个字符 方向左 or Ctrl+B 光标左移一位 方向右 or Ctrl+F光标右移一位 TAB 输入一个不完整的命令并按TAB键,就可以补全该命令 命令行在线帮助 部分帮助 <Huawei>d? <Huawei>.