resnet50网络结构_AAAI2020 | 利用网络结构关系加速NAS+Layer

这是我在海康威视研究院实习的工作,被AAAI-2020接收为Spotlight。
56a04b40d1ba566a455eeb85566f74d0.png
论文地址:http://xxx.itp.ac.cn/pdf/2002.12580v1

引子

上一个阶段的网络结构搜索(NAS)研究,主要在两个方面。1)各类搜索方法,从强化学习、进化算法等到梯度下降;2)各类网络结构或者配置,从各种算子到通道数,“万物皆可搜”。近期的NAS研究热点主要在探究高效、快速的NAS。搜索方法方面,现在比较时髦的是one-shot方法,处在发展阶段,也存在一些问题。one-shot方法将多个subnet并联在一个supernet里面,大概而论,并联在supernet中的subnet越多,one-shot方法将会更慢,对于搜索结构也会有随机性。很多人质疑,各种搜索方法都是在一个人为事先优选的「子搜索空间」基础上进行的。在这种人为优选子搜索空间中,所包含的各结构之间效果分布较为集中,上下限差距不大或者极端的结构分布很少,也就是说,这是一个效果接近于最优的「次优子结构空间」。那问题在于,NAS作为AutoML的一个重要部分,是要对之前一些需要人的经验或试错的工作进行自动化处理的,自动寻找这个「次优子结构空间」也是NAS的应有之义。我们进行NAS,首要的是承认了各种结构是不平等的。不平等自然是最直白的一种关系。上一阶段的NAS工作大多在搜索方法和不同任务空间上钻研,现在,是时候注意一下,在一个任务上,整个结构搜索空间中各个结构之间是否具有一定的关系呢?我们知道这个世界是普遍联系的,同理,网络搜索空间,也是由结构以及结构之间的关系构成的。如果我们掌握了结构之间关系,就可以有先见之明,从而达到NAS加速效果。这是一个问题。各种网络结构或者配置方面,在之前的工作中,有算子选择、通道数搜索,然而对层数搜索的NAS工作是不够完善的。我们知道,one-shot方法中supernet是并联的,但是层是串联的,现在如何得到一个one-shot的层数搜索框架呢?这也是一个问题。这篇文章中,我们可以找到以上两个问题,即网络结构关系和卷积神经网络层数搜索的答案。

工作

首先问题的定义,layer assignment search,可以泛泛理解成层数搜索。详细来说,这里的层指的是一个单元,比如resnett的bottleneck,plane net的conv-bn-relu等;还有,CNN中,一般用下采样(stride conv/pooling)划分阶段,每一个阶段会堆叠若干层,比如resnet,四个阶段,各阶段层数为3,4,6,3,每一个层就是一定的算力。
c1d73013fa781ee31d8019d1d11fe85c.png不同layer assignment的ResNet-50
值得说明的一点,以上不同layer assignment的ResNet50是具有相同FLOPs的。可以计算验证。实际项目中,尤其在边缘设备算力限制情况下,如果不能用ResNet50,就需要确定一个阶段里分配几层算力,这就是layer assignment search 问题。这里面包含了两个意思,第一,就是总层数,第二,就是给定层数下各层的分配。然后回答到一个问题:整个结构搜索空间中各个结构之间是否具有一定的关系呢?答案是有的,就是,后面一层的最好层分配结构继承自前一层的最好层分配结构。由浅至深。层层下去,去除了网络空间的冗余。示意图如下:
a43bef64d741965baea3ecdcc72a81f5.png
将这种关系命名为Neural Inheritance Relation(NIR)。将这个关系作为先验,构建一个one-shot搜索框架,当然是针对层数搜索的,即是Neural Inheritance Relation Guided One-Shot Layer Assignment Search 。
4e79e68f5967ff95c58699e50ecc4250.png
如上图所示,层数搜索的one-shot框架。一个包含了诸多层的supernet首先被构建出来,每次采样,在每个阶段要从浅到深的进行,将采样得到的各阶段layer连接起来,就是一个 candidate subnet。采样从浅层开始,举个例子,图中有两个下采样,划分起三个阶段。那么第0次采样是1-1-1的层分配,第一次采样全部的candidate只要三个:1-1-2,1-2-1,2-1-1。每个采样得到的subnet将会被公平的进行若干次训练,评估出最好结构,标记为optimal-1。这个时候运用NIR,第2次只采样与optimal-1有继承关系的下一层subnet,依然只有三个。事实上每一次采样数等于阶段数。算法步骤如下:
ea897bbd94940692e17852793bc56aec.png
算法的加速效果,首先从理论上来讲,一个阶段(group)数为n,层(layer)数为m的CNN,穷尽所有,层数搜索的搜索空间具体大小如下2d7b6b1f-bc2b-eb11-8da9-e4434bdf6706.svg层数搜索的搜索空间复杂度为 2e7b6b1f-bc2b-eb11-8da9-e4434bdf6706.svg,我们这种NIR神经网络结构关系引导的搜索,实际搜索空间复杂度为 2f7b6b1f-bc2b-eb11-8da9-e4434bdf6706.svg,为搜索踩了一脚油门。本文在CIFAR-100上搭建了层数搜索数据集,在Tiny-ImageNet, ImageNet上进行了实验。
095a49aa07e3a7f3bd2f47ecc703704e.png
具体的详情请见paper:https://arxiv.org/abs/2002.12580我们将层数搜索单独摘出来,更加存粹的探究神经网络结构之间的关系,并希望网络结构关系的思路,可以给NAS社区带来一些insight,进一步得到更加通用的高效NAS方案。作者:知乎-孟让地址:https://www.zhihu.com/people/mengrang

25e47eae8b15d5b12daf87cffabfed24.png

f36c416d6eb5574d17851a4722f85b6e.gif26ca0f3f1c761c6394bf99cc2cf4b641.png

历史文章推荐

  • 你的毕业论文过了吗?《如何撰写毕业论文?》

  • 卡尔曼滤波系列——经典卡尔曼滤波推导

  • 谈谈CNN中的位置和尺度问题

  • 目标检测和感受野的总结和想法

  • 一代传奇 SIFT 算法 专利到期!

  • CNN真的需要下采样(上采样)吗?

  • 人体姿态估计的过去,现在,未来

  • 2018-2019年度 Top10 综述

  • 【Awesome】Few-Shot Learning论文阅读列表

  • 你有哪些deep learning(rnn、cnn)调参的经验?

  • 给研究新生的建议,光看论文是学不好的,一定要看书,看书,看书!

  • 不是我们喜新厌旧,而是RAdam确实是好用,新的State of the Art优化器RAdam

  • 机器学习中的评价指标

  • CVPR2019 |《胶囊网络(Capsule Networks)综述》,附93页PPT下载

你正在看吗?👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502087.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 去除nan inf_Python实现半自动评分卡建模(附代码)

作者:Summer Memories个人公众号:风控汪的数据分析之路知乎专栏:小鑫的数据分析笔记这次分享一个自己写的python脚本,可以实现半自动化的评分卡建模。运行脚本时需要input已经预处理好的训练集和测试集数据,所以建模前…

国嵌c语言深度,国嵌C语言3部全

课程目录:国嵌 C语言深度剖析班:1课-基本数据类型分析2 auto,register,static分析3 if,switch,do,while,for分析4 goto,void,extern,sizeof分析5 const和volatile分析6 struct和union分析7课-enum和typedef分析8 注释符号9 接续符和转义符10 单引号和双引…

linux如何判断网线插入_“Linux”中如何判断哪个网卡连接网线?

展开全部【解决方法】1、ifconfig查看现在使用的网e68a84e8a2ad3231313335323631343130323136353331333365633935卡。2、ethtool命令查看网卡的具体信息,如eth0是连接状态,则正常使用。2、在ifconfig中可以看到有eth2这个网卡,但不知道是否连线&#xff…

单调有界定理适用于函数吗_《实变函数》——论有界变差函数

一日不见如隔三秋,本人觉得有界变差函数是实变函数中最容易理解且和高等数学联系最紧密的一个概念,其在概率论中也有非常广泛的应用,也和勒贝格空间有着千丝万缕的联系。什么叫有界变差函数?若在区间(a,b)中&#xff0…

msp430 c语言开发环境,如何使用C语言来编写MSP430的高质量代码

微处理器一般用于特定环境和特定用途,出于成本、功耗和体积的考虑,一般都要求尽量节省使用资源,并且,由于微处理器硬件一般都不支持有符号数、浮点数的运算,且运算位有限,因此,分配变量时必须仔细。另外要说…

oracle 增量设为3 循环_Oracle 差异性增量 和 累计增量 原理(转)

RMAN一个强大的功能是支持增量备份,增量备份中心思想就是减少备份的数据量,我们不需要在从头开始备份了,只需要备份自上次已备份之后的数据块即可。Oracle 9i 共有五种级别 0 1 2 3 4,0级最高-4级最低,0级是1级的基础以…

springboot redis 断线重连_Redis(9)——史上最强【集群】入门实践教程

一、Redis 集群概述Redis 主从复制到 目前 为止,我们所学习的 Redis 都是 单机版 的,这也就意味着一旦我们所依赖的 Redis 服务宕机了,我们的主流程也会受到一定的影响,这当然是我们不能够接受的。所以一开始我们的想法是&#xf…

智能指针的释放_看完这篇,别再说不会智能指针了

C智能指针一、智能指针的作用上一篇介绍了内存池的原理和实现,详情请见内存池设计与实现;内存池可以帮助我们有效的对内存进行管理,智能指针可以很方便的管理指针,避免出现内存泄漏;智能指针的作用智能指针的作用&…

c语言输出后面空格,新人提问:如何将输出时每行最后一个空格删除

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼如何将每行最后一个空格删除&#xff0c;使矩阵只有数字间有空格&#xff0c;没有多余空格&#xff1f;#include#includeint main(){int i,j,k,m,n,x,h,y;int a[15][15]{0};while(scanf("%d",&i)){k1;for(n1;n<i;…

pandas 日期比较大小_pandas处理日期时间,按照时间筛选

pandas有着强大的日期数据处理功能&#xff0c;本期我们来了解下pandas处理日期数据的一些基本功能&#xff0c;主要包括以下三个方面&#xff1a;按日期筛选数据按日期显示数据按日期统计数据运行环境为 windows系统&#xff0c;64位&#xff0c;python3.5。1 读取并整理数据首…

python中符号输入_Python基础(输入、运算符)

输入 1. python2版本中 1.1 使用 raw_input()函数&#xff0c; 看如下示例: password raw_input("请输入密码:") print &#xff08;您刚刚输入的密码是:%s, % password&#xff09; 运行结果:注意: raw_input()的小括号中放入的是&#xff0c;提示信息&#xff0c;…

c语言课程教学改革,C语言课程教学改革和实践.doc

C语言课程教学改革和实践C语言课程教学改革和实践程序设计课程在计算机科学(Computer Science&#xff0c; CS)专业新生的教学中起着相当基础的作用&#xff0c;CS专业包括计算机科学与技术、软件工程和网络工程。尽管近年来涌现了很多新的程序设计语言&#xff0c;如java&…

audio接线图解_图文:主板跳线(排线)连接技巧HD AUDIO连线接法

作为一名新手&#xff0c;要真正从头组装好自己的电脑并不容易&#xff0c;也许你知道CPU应该插哪儿&#xff0c;内存应该插哪儿&#xff0c;但遇到一排排复杂跳线的时候&#xff0c;很多新手都不知道如何下手。钥匙开机其实并不神秘还记不记得你次见到装电脑的时候&#xff0c…

code blocks c语言,Code Blocks安装与使用图文教程(使用Code::Blocks编写C语言程序)...

CodeBlocks 完全支持单个源文件的编译&#xff0c;如果你的程序只有一个源文件(初学者基本上都是在单个源文件下编写代码)&#xff0c;那么不用创建项目&#xff0c;直接运行即可&#xff1b;如果有多个源文件&#xff0c;才需要创建项目。1) 新建源文件打开 CodeBlocks &#…

python链表实现栈_python实现链表队列栈

#!/usr/bin/python # -*- coding: utf-8 -*- #便于测试 data 使用数字 class Node(object): def __init__(self,data): self.data data self.next None self.prev None class List(object): def __init__(self): self.next self self.prev self self.size 0 # 是否为空 d…

python except用法和作用_Python面试题(部分附带面试标准答案) 建议收藏

1、请尽可能列举python列表的成员方法&#xff0c;并给出一下列表操作的答案&#xff1a;&#xff08;1&#xff09; a[1, 2, 3, 4, 5], a[::2]?, a[-2:] ?&#xff08;2&#xff09; 一行代码实现对列表a中的偶数位置的元素进行加3后求和&#xff1f;&#xff08;3&#xf…

c语言简单的24点游戏,C语言解24点游戏程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼前几天在微博上看到24点的游戏&#xff0c;6 6 610。算了很久是在算不出来&#xff0c;最后我想我何不写一个小程序解决它&#xff1f;说做就做&#xff0c;我刚开始的想法很简单&#xff0c;就是列举4个数的所有可能的表达式组合&…

chrome vue插件_VS Code 前端常用插件推荐

⊕.vscode安装插件只需要点击图片所示按钮&#xff0c;即可进入拓展&#xff0c;在搜索框中输入插件名点击安装后&#xff0c;等待安装好即可点击重新加载重启vscode使得插件生效。Ξ.当你不需要某个插件时只需要进入扩展&#xff0c;点击对应插件右下角的齿轮按钮即可选择禁用…

ubantu获取信息_Ubuntu 下查看CPU 信息命令

查看当前操作系统内核信息uname -aLinux redcat 2.6.31-20-generic #58-Ubuntu SMP Fri Mar 12 05:23:09 UTC 2010 i686 GNU/Linux查看当前操作系统发行版信息cat /etc/issueUbuntu 9.10 /n /l查看cpu型号cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c2 Intel(R) Cor…

为什么c语言读文件少内容,这个程序为什么在读文件时候读不全数据?

已结贴√问题点数&#xff1a;10 回复次数&#xff1a;7这个程序为什么在读文件时候读不全数据&#xff1f;txt(数据):4700.7100 -16.801 73.331 115.494 37.617 11414.634 1.009 8.802 9.738 9.444 15.011 10.455 20.906 …