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已经预处理好的训练集和测试集数据,所以建模前…

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

已结贴√问题点数:10 回复次数:7这个程序为什么在读文件时候读不全数据?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 …

@mapperscan注解_Spring的@Import注解详解

首先看下Import的javadoc文档&#xff1a;Provides functionality equivalent to the <import/> element in Spring XML. Allows for importing Configuration classes, ImportSelector and ImportBeanDefinitionRegistrar implementations, as well as regular componen…

百合数c语言360问答,《百合花》

满意答案fadess1d2013.02.26采纳率&#xff1a;51% 等级&#xff1a;12已帮助&#xff1a;7212人作者茹志娟&#xff0c;于1958年3月在《延安》上面发表。这篇小说具有清新俊逸的艺术风格。是她前期的代表作。她写这篇小说时&#xff0c;中那个是反右斗争扩大化&#xff0c;…

python 实现显著性检测_使用python轻松实现高大上的YOLOV4对象检测算法

YOLO系列对象检测算法&#xff0c;算是人工智能技术领域的一匹黑马&#xff0c;当开发者宣布不再为YOLO系列检测算法更新时&#xff0c;很多开发者瞬间失去了”精神食粮“。突然&#xff0c;当YOLOV4检测算法发布的时候&#xff0c;让很多开发者喜出望外。YOLOV4对象检测YOLOV4…

android source镜像源_【转载】Celadon快速上路指南Part2:编译Celadon镜像

Celadon快速上路指南Part2&#xff1a;编译Celadon镜像From: 孙晓璐 AndroidIA Celadon 9/20一目了然 | Celadon 新手上路快速通道隆重揭晓 | 打开Celadon 的正确姿势上一期我们向您介绍了如何安装Celadon预编译镜像&#xff08;Celadon快速上路指南 Part1&#xff1a;安装Cela…

python中os模块_Python的武器库11:os模块

说到编程语言python&#xff0c;有一个著名的格言"余生太短&#xff0c;只用python"。如果要分析为什么会存在这么一句格言&#xff1f;python的语法并不简单&#xff0c;有复杂难懂的部分&#xff0c;之所以有这样一句格言&#xff0c;是因为python中有很多强大的模…

java 同步锁_死磕 java同步系列之自己动手写一个锁Lock

问题&#xff08;1&#xff09;自己动手写一个锁需要哪些知识&#xff1f;&#xff08;2&#xff09;自己动手写一个锁到底有多简单&#xff1f;&#xff08;3&#xff09;自己能不能写出来一个完美的锁&#xff1f;简介本篇文章的目标一是自己动手写一个锁&#xff0c;这个锁的…

android里canvas视频帧,移动端用canvas截取视频封面,如何不截取第一帧,而是截取其它的帧?...

我在微信开发工具里截的图是可以的&#xff0c;但是在手机上截的图缺变成全透明的了。我猜是视频的第一帧的问题微信开发工具的截图手机的截图我的代码&#xff1a;JS&#xff1a;function captureImage(video) {var scale1var canvas document.createElement("canvas&qu…

python画正方形内切圆_python画出三角形外接圆和内切圆的方法

刚看了《最强大脑》中英对决&#xff0c;其中难度最大的项目需要选手先脑补泰森多边形&#xff0c;再找出完全相同的两个泰森多边形。在惊呆且感叹自身头脑愚笨的同时&#xff0c;不免手痒想要借助电脑弄个图出来看看&#xff0c;闲来无事吹吹牛也是极好的。 今天先来画画外接圆…

查看地区的ip段_「教程」CloudFlare 自选 IP优化网站速度

前言CloudFlare 官网虽然不提供 CNAME / AAAA / A 记录接入 CloudFlare 的 CDN &#xff0c;但是我们可以通过 CloudFlare Partner 免费使用 CNAME / A 记录接入 CloudFlare 。而我们正好利用 CloudFlare 使用 A 记录接入 CDN 的方式&#xff0c;自定义节点 IP &#xff0c;例如…

android手机可以设置屏幕锁定,安卓手机屏幕锁设置方法(九个点图案)

这里以三星S5368手机屏幕锁为例随着三星S5368手机系统功能愈来愈完善&#xff0c;性能愈来愈强劲&#xff0c;越来越多的三星S5368用户们都喜欢把一些重要的信息甚至隐私放在三星S5368手机里面&#xff0c;但是这就有可能会让别人看到&#xff0c;这样一来你的三星S5368里面的信…

python win10 连接hive_使用win10+python3.5+impyla 连接大数据平台hive表的步骤与问题解决...

环境硬件配置及Hadoop&#xff0c;Hive版本一、安装步骤pip install pure-saslDownloading https://pypi.tuna.tsinghua.edu.cn/packages/16/83/30eaf3765de898083 75a8358f9c15d45a3dd44ed26be991471abc0b4480b/pure_sasl-0.5.1-py2.py3-none-any.whlpip install thrift_sasl0…