利用ReLU输出稀疏性加速卷积

2023-12-13 11:18
文章标签 输出 加速 卷积 稀疏 relu

本文主要是介绍利用ReLU输出稀疏性加速卷积,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一篇讲利用ReLU输出的稀疏性来加速卷积计算的论文,其目的和另一篇文章《More is less》 有点类似。

实验效果似乎还不错,但似乎并没有很大的创新。

文章链接: 《Speeding up Convolutional Neural Networks By Exploiting the Sparsity of Rectifier Units》

Motivation

下图的结论是:使用ReLU作为激活函数的网络,其网络输出通常都非常稀疏。

float

另一方面,目前的稀疏矩阵运算效率并不高。

Method

只要弄明白卷积的机制,就很容易明白本文干了什么。

通常使用ReLU作为激活函数会导致输出很稀疏,从而也使得后续的卷积输入变得稀疏。 如下图所示,假如输入feature map维度为 \(4\times 4\times 2\),非常稀疏只有一个非零值0.4; 再假如有4个 \(2\times 2\times 2\)的卷积核,且卷积步长为2。 则中间的图示,即是传统的im2col+GEMM的卷积计算方式。

可以看出,这种计算存在非常大的冗余。 本文的方法,不计算完整的矩阵乘法,而是只计算非0值导致的输出。并且,充分利用AVX或者SSE指令完成 \((1\times1) \times (1\times4) \)的乘法。

float

Experiments

作者只对稀疏度大于0.6的层进行处理,估计是稀疏度太小时这种操作肯定没有专业的Blas库快。

float

总结

(1) 不需要额外的训练,只需要修改卷积的实现,基本上是工程优化的任务;

(2) 整体的加速效果,跟输入的稀疏性有着直接关系,但是就我观察,很多网络的ReLU输出虽然比较稀疏,但稀疏度大于0.7的并不多。而本方法在稀疏度不够时,其实并没有很明显的优势;

(3) 可以考虑对网络每层的输出加入类似1范数Loss的约束,人为地使输出更加稀疏,不过具体会不会造成网络性能的明显下降就需要更多的实验了。

这篇关于利用ReLU输出稀疏性加速卷积的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/488273

相关文章

YOLOv8改进 | SPPF | 具有多尺度带孔卷积层的ASPP【CVPR2018】

💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效涨点》专栏介绍 & 专栏目录 | 目前已有40+篇内容,内含各种Head检测头、损失函数Loss、Backbone、Neck、NMS等创新点改进——点击即可跳转 Atrous Spatial Pyramid Pooling (ASPP) 是一种在深度学习框架中用于语义分割的网络结构,它旨

时间服务器中,适用于国内的 NTP 服务器地址,可用于时间同步或 Android 加速 GPS 定位

NTP 是什么?   NTP 是网络时间协议(Network Time Protocol),它用来同步网络设备【如计算机、手机】的时间的协议。 NTP 实现什么目的?   目的很简单,就是为了提供准确时间。因为我们的手表、设备等,经常会时间跑着跑着就有误差,或快或慢的少几秒,时间长了甚至误差过分钟。 NTP 服务器列表 最常见、熟知的就是 www.pool.ntp.org/zo

神经网络第三篇:输出层及softmax函数

在上一篇专题中,我们以三层神经网络的实现为例,介绍了如何利用Python和Numpy编程实现神经网络的计算。其中,中间(隐藏)层和输出层的激活函数分别选择了 sigmoid函数和恒等函数。此刻,我们心中不难发问:为什么要花一个专题来介绍输出层及其激活函数?它和中间层又有什么区别?softmax函数何来何去?下面我们带着这些疑问进入本专题的知识点: 1 输出层概述 2 回归问题及恒等函数 3

【图像识别系统】昆虫识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50

一、介绍 昆虫识别系统,使用Python作为主要开发语言。通过TensorFlow搭建ResNet50卷积神经网络算法(CNN)模型。通过对10种常见的昆虫图片数据集(‘蜜蜂’, ‘甲虫’, ‘蝴蝶’, ‘蝉’, ‘蜻蜓’, ‘蚱蜢’, ‘蛾’, ‘蝎子’, ‘蜗牛’, ‘蜘蛛’)进行训练,得到一个识别精度较高的H5格式模型文件,然后使用Django搭建Web网页端可视化操作界面,实现用户上传一

大型网站架构演化(六)——使用反向代理和CDN加速网站响应

随着网站业务不断发展,用户规模越来越大,由于中国复杂的网络环境,不同地区的用户访问网站时,速度差别也极大。有研究表明,网站访问延迟和用户流失率正相关,网站访问越慢,用户越容易失去耐心而离开。为了提供更好的用户体验,留住用户,网站需要加速网站访问速度。      主要手段:使用CDN和反向代理。如图。     使用CDN和反向代理的目的都是尽早返回数据给用户,一方面加快用户访问速

C语言中的字符输入/输出和验证输入

在C语言中,字符输入/输出功能允许程序与用户进行交互,读取用户的输入信息并展示输出结果。同时,验证输入的作用在于确保用户输入的数据符合预期,以提高程序的稳定性和可靠性,防止无效输入引发的错误或异常行为,从而提供更好的用户体验。 基础概念 输入(Input):指的是向程序填充数据的过程,通常来源于用户输入、文件读取或其他外部数据源。 输出(Output):指的是将数据显示在屏幕上、打印机上或

JS输出工具

1、alert()弹窗会以文本的格式输出; 2、document.write()输出到页面,会以html的语法解析里面的内容; 3、prompt(“提示文字”,”默认值”)输入框。 alert()弹窗会以文本的格式输出 注意: alert()中英文单双引号不能同时存在。document.write()输出到页面 这个效果跟在body部分加h1标签是一样的。promp

通过 cloudflare 白嫖个人 docker 镜像加速服务

不知为何,现在大多数的 docker hub 镜像加速站都停止服务,而官方站点又因某些原因访问不到或延迟很高。所以,今天来记录一种通过 CloudFlare 搭建一个自己的镜像加速服务。 0、必看!!! 注意: 此方案需要有域名才行,后续需要给域名绑定到 Cloudflare,建议直接在腾讯云-域名注册上面搞一个,选最便宜的就行。 1、注册 cloudflare 进入官网,自行进

「单细胞转录组系列」如何从稀疏矩阵中提取部分数据进行分析

这一篇文章是回答知识星球中一位星友的提问,她的电脑内存有限,无法直接使用所有数据,只能分析部分数据。 数据来源: https://content.cruk.cam.ac.uk/jmlab/atlas_data.tar.gz 解压缩之后,得到下面数据 数据清单 其中raw_counts.mtx是以稀疏矩阵格式存放的表达量数据,文件为6.5G, 用普通的文本编辑器无法打开,

WGDI之深入理解blockinfo输出结果

blockinfo模块输出文件以csv格式进行存放,共23列,可以用EXCEL直接打开。 block info 其中16列非常容易裂解,描述如下 id 即共线性的结果的唯一标识chr1,start1,end1 即参考基因组(点图的左边)的共线性范围(对应GFF1的位置)chr2,start2,end2 即参考基因组(点图的上边)的共线性范围(对应GFF2的位置)pvalue 即共