Layer-level的快速算法
十岁的小男孩
本文为终端移植的一个小章节。
Sparse Block Net
本节为优化加速的第二章节,主要介绍Sparse-block net。上章节为OP算子层的加速,本节为层级间的加速,主要针对CNN的加速。首先通过看一篇大佬JYZhang_sh的博客,之后通过一篇论文实际应用在网络层级结构。
论文:SBNet: Sparse Blocks Network for Fast Inference
稀疏块网络(SBNet),这是一种用于TensorFlow的开源算法,通过利用CNN激活中的稀疏性来加速推理。SBNet允许通过更深和更宽的网络配置进行实时推断,从而在减少的计算预算内实现精度增益。
出于我们的算法的目的,我们从掩码中定义块稀疏性,该掩码表示激活非零的位置。这个掩码可以来自问题的先验知识,或者仅仅来自阈值平均激活。为了利用高度优化的密集卷积运算符,我们定义了两个运算,将稀疏激活转换为仅包含非零元素的较小特征映射。
SBNet 通过首先使用来自输入张量的重叠块对注意掩码执行池化操作并将其转换为传递给块收集操作的索引列表来实现此目的,如下面的图1所示:

图1.为了利用CNN激活中的稀疏性,SBNet首先将计算掩码转换为瓦片索引列表。
然后, 收集操作获取切片并将它们沿批量维度堆叠在一起形成新的张量。然后使用现有的密集卷积的优化实现,然后定制的散布操作执行逆操作,将结果写在原始密集输入张量之上。下面的图2显示了我们提出的使用稀疏聚集/分散操作的稀疏卷积机制:

图2.我们提出的稀疏卷积层利用稀疏分散/聚集操作来加速推理。
当我们为SBNet设计稀疏操作API时,我们希望能够轻松地集成到流行的CNN架构中,例如 ResNet和Inception,以及其他定制的CNN构建块。为实现这一目标,我们为我们引入的三个基本操作发布了CUDA实现和TensorFlow包装器:reduce_mask ,sparse_gather 和sparse_scatter 。使用这些低级操作,可以将块稀疏性添加到不同的CNN架构和配置。
知识应该是开源的,欢迎斧正。929994365@qq.com
Layer-level的快速算法的更多相关文章
- Op-level的快速算法
十岁的小男孩 本文为终端移植的一个小章节. 目录 引言 FFT Conv2d (7x7, 9x9) Winograd Conv2d (3x3, 5x5) 引言 本节针对CNN进行加速计算的,主要有以下 ...
- MinFilter(MaxFilter)快速算法C++实现
目录 1.算法简述 1.1.MinFilter(MaxFilter) 算法简述 1.2.MinFilter(MaxFilter) 快速算法简述 2.实现代码 2.1.MinFilterOneRow 单 ...
- 从大整数乘法的实现到 Karatsuba 快速算法
Karatsuba 快速乘积算法是具有独特合并过程(combine/merge)的分治算法(Karatsuba 是俄罗斯人).此算法主要是对两个整数进行相乘,并不适用于低位数(如 int 的 32 位 ...
- 自动色彩均衡(ACE)快速算法
ACE算法源自retinex算法,可以调整图像的对比度,实现人眼色彩恒常性和亮度恒常性,通过差分来计算目标点与周围像素点的相对明暗关系来校正最终像素值,有很好的增强效果.但是计算复杂度非常高,本文提出 ...
- 产生N个不重复的随机数的快速算法
//seed array ,,,,,,,,,}; //随机数个数 ; //结果存放在里面 ]; ; i < N; i++) { //从剩下的随机数里生成 , startArray.length ...
- 多项式相乘快速算法原理及相应C代码实现---用到fft
最近认真研究了一下算法导论里面的多项式乘法的快速计算问题,主要是用到了FFT,自己也实现了一下,总结如下. 1.多项式乘法 两个多项式相乘即为多项式乘法,例如:3*x^7+4*x^5+1*x^2+5与 ...
- layer插件loading快速应用示例
1.页面引用<link rel="stylesheet" href="../Js/layer/skin/layer.css" /><scri ...
- 求素数的一个快速算法 Python 快速输出素数算法
思想 以100以内为例. 生成一个全是True的101大小的数组 2开始,遇到2的倍数(4,6,8,10...)都赋值为False 因为这些数字都有因子 2 3开始,遇到3的倍数(6,9,12...) ...
- 图像处理之基础---卷积及其快速算法的C++实现
头文件: /* * Copyright (c) 2008-2011 Zhang Ming (M. Zhang), zmjerry@163.com * * This program is free so ...
随机推荐
- 「LibreOJ Round #6」花火
转化思维的好题! 链接:here 大致题意: 有$ n$个数字,你每次可以交换相邻两个,还有一次交换任意两个元素的机会,求最少的交换次数使得这些数字升序排序(原数列两两不同) $ solotion:$ ...
- ubuntu 简单安装配置gitlab
安装 gitlab-ce 社区版 依赖 sudo apt-get install curl openssh-server ca-certificates postfix 添加gitlab包服务并安装 ...
- Python笔记(三)继承和多态、动态语言
一.继承 先定义一个A类 class A(object): def fun(self): print "Run A fun()" 在定义一个B类 class B(A): pass ...
- 关于vue监听dom与传值问题
1. 代码初始化一次执行部分属性为空的情况 原因: 异步加载 + 立马 传值时 直接渲染 dom里面 能实时更新 (无影响) 不能直接dom中渲染(有影响) 解决方法:需要通过监听的方式来处 ...
- CentOS7 设置主机名及IP映射
1.设置主机名 查看本机的主机名,使用如下三个命令中任意一个即可 # hostname # uname -n # cat /proc/sys/kernel/hostname 使用 vi 编辑器打开 / ...
- Nginx系列0:Nginx学习历程
Nginx学习历程 一.初识Nginx 1.Nginx适用于哪些场景 (1)静态资源服务 通过本地文件系统提供服务 (2)反向代理服务 Nginx的强大性能 缓存 负载均衡 (3)API服务 Open ...
- Pftriage:分析和追踪恶意文件,识别特征
项目地址 PFTriage:https://github.com/idiom/pftriage 参考 Pftriage:如何在恶意软件传播过程中对恶意文件进行分析 https://www.freebu ...
- 【ARTS】01_16_左耳听风-20190225~20190303
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- LwIP Application Developers Manual4---传输层之UDP、TCP
1.前言 本文主要讲解传输层协议UDP TCP 2.UDP 2.1 UDP from an application perspective 2.2 UDP support history in lwI ...
- 在vue中scss通过scoped属性设置局部变量如何设置框架样式
应用场景:在使用vue的大型单页应用页面中,我们可以通过使用scoped属性将当前组件的样式设置局部样式 界面被scoped局部化之后,不能覆盖界面里面的子组件样式,因为样式只对当前界面生效.(可以加 ...