如何使用Batch Normalization折叠来加速模型推理

发布时间:2022-01-05 18:27:53 作者:柒染
来源:亿速云 阅读:109

这期内容当中小编将会给大家带来有关如何使用Batch Normalization折叠来加速模型推理,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

导读  

如何去掉batch normalization层来加速神经网络。

 

介绍

Batch Normalization是将各层的输入进行归一化,使训练过程更快、更稳定的一种技术。在实践中,它是一个额外的层,我们通常添加在计算层之后,在非线性之前。它包括两个步骤:

如何使用Batch Normalization折叠来加速模型推理

Batch normalization在神经网络的训练中具有较高的效率,因此得到了广泛的应用。但它在推理的时候有多少用处呢?

一旦训练结束,每个Batch normalization层都拥有一组特定的γ和β,还有μ和σ,后者在训练过程中使用指数加权平均值进行计算。这意味着在推理过程中,Batch normalization就像是对上一层(通常是卷积)的结果进行简单的线性转换。

由于卷积也是一个线性变换,这也意味着这两个操作可以合并成一个单一的线性变换!这将删除一些不必要的参数,但也会减少推理时要执行的操作数量。

 

在实践中怎么做?

用一点数学知识,我们可以很容易地重新对卷积进行排列来处理batch normalization。提醒一下,对一个输入x进行卷积之后再进行batch normalization的运算可以表示为:

如何使用Batch Normalization折叠来加速模型推理

那么,如果我们重新排列卷积的Wb,考虑batch normalization的参数,如下:

如何使用Batch Normalization折叠来加速模型推理

我们可以去掉batch normalization层,仍然得到相同的结果!

注意:通常,在batch normalization层之前的层中是没有bias的,因为这是无用的,也是对参数的浪费,因为任何常数都会被batch normalization抵消掉。

 

这样做的效果怎样?

我们将尝试两种常见的架构:

为了演示,我们使用ImageNet dataset和PyTorch。两个网络都将训练5个epoch,看看参数数量和推理时间的变化。

 

1. VGG16

我们从训练VGG16 5个epoch开始(最终的准确性并不重要):

如何使用Batch Normalization折叠来加速模型推理

参数的数量:

如何使用Batch Normalization折叠来加速模型推理

单个图像的初始推理时间为:

如何使用Batch Normalization折叠来加速模型推理

如果使用了batch normalization折叠,我们有:

如何使用Batch Normalization折叠来加速模型推理

以及:

如何使用Batch Normalization折叠来加速模型推理

8448个参数被去掉了,更好的是,几乎快了0.4毫秒!最重要的是,这是完全无损的,在性能方面绝对没有变化:

如何使用Batch Normalization折叠来加速模型推理

让我们看看它在Resnet50的情况下是怎么样的!

 

2. Resnet50

同样的,我们开始训练它5个epochs:

如何使用Batch Normalization折叠来加速模型推理

初始参数量为:

如何使用Batch Normalization折叠来加速模型推理

推理时间为:

如何使用Batch Normalization折叠来加速模型推理

使用batch normalization折叠后,有:

如何使用Batch Normalization折叠来加速模型推理

和:

如何使用Batch Normalization折叠来加速模型推理

现在,我们有26,560的参数被移除,更惊讶的hi,推理时间减少了1.5ms,性能一点也没降。


如何使用Batch Normalization折叠来加速模型推理

上述就是小编为大家分享的如何使用Batch Normalization折叠来加速模型推理了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. 怎么使用fpga云服务器
  2. 如何使用gpu云服务器

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:SQL注入该如何理解

下一篇:怎么使用线程+CommonIO工具包实现图片的下载

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》