十岁的小男孩

  本文为终端移植的一个小章节。

Sparse Block Net

  本节为优化加速的第二章节,主要介绍Sparse-block net。上章节为OP算子层的加速,本节为层级间的加速,主要针对CNN的加速。首先通过看一篇大佬JYZhang_sh的博客,之后通过一篇论文实际应用在网络层级结构。

论文:SBNet: Sparse Blocks Network for Fast Inference

  论文地址  GitHub源码  论文解读

  稀疏块网络(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的快速算法的更多相关文章

  1. Op-level的快速算法

    十岁的小男孩 本文为终端移植的一个小章节. 目录 引言 FFT Conv2d (7x7, 9x9) Winograd Conv2d (3x3, 5x5) 引言 本节针对CNN进行加速计算的,主要有以下 ...

  2. MinFilter(MaxFilter)快速算法C++实现

    目录 1.算法简述 1.1.MinFilter(MaxFilter) 算法简述 1.2.MinFilter(MaxFilter) 快速算法简述 2.实现代码 2.1.MinFilterOneRow 单 ...

  3. 从大整数乘法的实现到 Karatsuba 快速算法

    Karatsuba 快速乘积算法是具有独特合并过程(combine/merge)的分治算法(Karatsuba 是俄罗斯人).此算法主要是对两个整数进行相乘,并不适用于低位数(如 int 的 32 位 ...

  4. 自动色彩均衡(ACE)快速算法

    ACE算法源自retinex算法,可以调整图像的对比度,实现人眼色彩恒常性和亮度恒常性,通过差分来计算目标点与周围像素点的相对明暗关系来校正最终像素值,有很好的增强效果.但是计算复杂度非常高,本文提出 ...

  5. 产生N个不重复的随机数的快速算法

    //seed array ,,,,,,,,,}; //随机数个数 ; //结果存放在里面 ]; ; i < N; i++) { //从剩下的随机数里生成 , startArray.length ...

  6. 多项式相乘快速算法原理及相应C代码实现---用到fft

    最近认真研究了一下算法导论里面的多项式乘法的快速计算问题,主要是用到了FFT,自己也实现了一下,总结如下. 1.多项式乘法 两个多项式相乘即为多项式乘法,例如:3*x^7+4*x^5+1*x^2+5与 ...

  7. layer插件loading快速应用示例

    1.页面引用<link rel="stylesheet" href="../Js/layer/skin/layer.css"  /><scri ...

  8. 求素数的一个快速算法 Python 快速输出素数算法

    思想 以100以内为例. 生成一个全是True的101大小的数组 2开始,遇到2的倍数(4,6,8,10...)都赋值为False 因为这些数字都有因子 2 3开始,遇到3的倍数(6,9,12...) ...

  9. 图像处理之基础---卷积及其快速算法的C++实现

    头文件: /* * Copyright (c) 2008-2011 Zhang Ming (M. Zhang), zmjerry@163.com * * This program is free so ...

随机推荐

  1. Python 21 Django 实用小案例1

    实用案例 验证码与验证   KindEditor      组合搜索的实现 单例模式      beautifulsoup4 验证码与验证 需要安装Pillow模块 pip stall pillow ...

  2. 【mmall】学习Spring要善用Spring的Github

    官网:https://projects.spring.io/spring-framework 宠物医院项目(非常经典的Spring项目):https://github.com/spring-proje ...

  3. Django学习手册 - ORM 多对多表

    定义表结构: class Host(models.Model): hostname = models.CharField(max_length=32) port = models.IntegerFie ...

  4. HDU 4857 逃生(拓扑排序)

    拓扑排序 一.定义 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若<u,v> ∈ ...

  5. python的扩展包requests的高级用法

    Python 标准库中的 urllib2 模块提供了你所需要的大多数 HTTP 功能,但是它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作,甚至包括各种方法覆盖,来完成最 ...

  6. ueditor取消文本编辑器的自动拉伸高度、宽度。

    1.首先引入富文本编辑器 <script type="text/javascript" src="<%=basePath%>js/ueditor/ued ...

  7. MySQL触发器trigger的使用

    https://www.cnblogs.com/geaozhang/p/6819648.html 触发器的触发 语句的错误 和 触发器里面 错误 都不会运行 NEW与OLD详解 MySQL 中定义了 ...

  8. HDFS-put: unexpected URISyntaxException

    目的:将某zip上传到HDFS某目录 [hdfs@mr1 jars]$ hadoop fs -put "20180720_155245 label.zip" /user/File/ ...

  9. 在windows下用vagrant建立lnmp开发环境

    1.安装vagrant,vitrualbox 2.下载homestead的box包,并添加到vagrant 下载地址: https://atlas.hashicorp.com/laravel/boxe ...

  10. NTSC、PAL、SECAM三大制式简介

    NTSC.PAL.SECAM三大制式简介 NTSC.PAL和SECAM是全球三大主要的电视广播制式,这三种制式是不能互相兼容的,例如在PAL制式的电视上播放NTSC的视频,则影像画面将不能正常显示.下 ...