十岁的小男孩

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

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架构中,例如 ResNetInception,以及其他定制的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. Miller-Rabin判质数和Pollared-Rho因数分解

    朴素判质数:$ 在[2..\sqrt{n}]$范围内枚举逐一判断是不是$ n$的因数 时间复杂度:$ O(\sqrt{n})$ 当n达到$ 10^{18}$级别时,显然效率过低 Miller-Rabi ...

  2. ieda 运行web--导入其它jar包

    == 配置 或选择tomcat 1.打开IntelliJ IDEA,点击菜单的“Run”->“Edit Configurations...”,然后会打开运行设置弹框.2.在弹框中,点击左上角的“ ...

  3. Java开发环境配置(4)--Maven安装 环境变量配置,本地仓库配置---插件安装

    说明在前:本人用过的 luna  mars 等,都已经自带maven插件的了,以下有些文章是很老的,讲到maven插件的安装都可以忽略掉. maven安装eclipse在线配置maven搞定所有插件_ ...

  4. Django学习手册 - csrf

    CSRF csrf原理 无csrf时存在隐患 Form提交 Ajax提交 默认为全局都csrf Form表单提交方式: <div> <form action="/login ...

  5. Network Architecture Search Survey

  6. RabbitMQ简单应用の主题模式(topic)

    Topic exchange(主题转发器) 发送给主题转发器的消息不能是任意设置的选择键,必须是用小数点隔开的一系列的标识符.这些标识符可以是随意,但是通常跟消息的某些特性相关联.一些合法的路由选择键 ...

  7. 第一次发博,发个简单的Java程序发送手机短信验证

    最近在准备一个项目,想的登录时候用手机验证,就通过上网查阅了一下手机验证的实现方法,原来超级简单,下面将一步一步介绍. 1.去中国网建注册一个账号密码,首次注册送五条免费短信和3条免费彩信.具体的网址 ...

  8. 20165231 预习作业3 linux安装及学习

    linux安装 由于以前稍微关注过虚拟机相关知识,所以大致知道虚拟机软件的相关知识.目前我已知的普遍使用的虚拟机软件是VMware Workstation(下文简称VM),VirtualBox(下文简 ...

  9. fabric.js PatternBrush

    // Original canvas const canvas = new fabric.Canvas('canvas'); fabric.Image.fromURL('https://picsum. ...

  10. Navicat for MySQL连接mysql数据库时提示错误:Can't connect to MySQL server (10060)

    导致些问题可能有以下几个原因: 1.网络不通: 2.服务未启动: 3.防火墙端口未开放: a)首先确认mysql配置正确,并正确开启 service mysqld start; 设置mysql远程连接 ...