0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

深度学习自然语言处理 来源:AI公园 作者:AI公园 2020-11-24 09:45 次阅读

导读

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

介绍

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

首先减去其平均值,然后除以其标准差

进一步通过γ缩放,通过β偏移,这些是batch normalization层的参数,当网络不需要数据的时候,均值为0、标准差为1。

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

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

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

在实践中怎么做?

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

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

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

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

这样做的效果怎样?

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

使用batch norm的VGG16

ResNet50

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

1. VGG16

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

参数的数量:

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

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

以及:

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

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

2. Resnet50

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

初始参数量为:

推理时间为:

使用batch normalization折叠后,有:

和:

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

责任编辑:lq!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4759

    浏览量

    100476
  • 参数
    +关注

    关注

    11

    文章

    1769

    浏览量

    32060
  • 线性
    +关注

    关注

    0

    文章

    196

    浏览量

    25123

原文标题:使用Batch Normalization折叠来加速模型推理

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    卷积神经网络与传统神经网络的比较

    神经网络,也称为全连接神经网络(Fully Connected Neural Networks,FCNs),其特点是每一的每个神经元都与下一
    的头像 发表于 11-15 14:53 139次阅读

    神经网络中的卷积、池化与全连接

    在深度学习中,卷积神经网络(Convolutional Neural Network, CNN)是一种特别适用于处理图像数据的神经网络结构。它通过卷积、池化和全连接
    的头像 发表于 07-11 14:18 4433次阅读

    神经网络结构的作用是什么

    的三结构是最基本的神经网络结构,包括输入、隐藏和输出。下面介绍神经网络
    的头像 发表于 07-11 11:03 640次阅读

    神经网络模型的基本结构是什么

    神经网络模型是一种常见的深度学习模型,它由输入、隐藏和输出组成。下面将介绍三
    的头像 发表于 07-11 10:59 644次阅读

    神经网络模型的优缺点

    神经网络模型是一种常见的深度学习模型,它由输入、两个隐藏和输出组成。本文将介绍三
    的头像 发表于 07-11 10:58 391次阅读

    如何构建三bp神经网络模型

    引言 BP神经网络(Backpropagation Neural Network)是一种前馈神经网络,通过反向传播算法进行训练。三BP神经网络由输入
    的头像 发表于 07-11 10:55 353次阅读

    什么是神经网络加速器?它有哪些特点?

    神经网络加速器是一种专门设计用于提高神经网络计算效率的硬件设备。随着深度学习技术的快速发展和广泛应用,神经网络模型的复杂度和计算量急剧增加,对计算性能的要求也越来越高。传统的通用处理器
    的头像 发表于 07-11 10:40 410次阅读

    人工神经网络模型的分类有哪些

    详细介绍人工神经网络的分类,包括前馈神经网络、卷积神经网络、循环神经网络、深度神经网络、生成对抗网络
    的头像 发表于 07-05 09:13 894次阅读

    卷积神经网络和bp神经网络的区别在哪

    结构、原理、应用场景等方面都存在一定的差异。以下是对这两种神经网络的详细比较: 基本结构 BP神经网络是一种多层前馈神经网络,由输入、隐藏
    的头像 发表于 07-04 09:49 8694次阅读

    反向传播神经网络分为多少

    的层数可以根据具体问题和数据集确定,但通常包括输入、隐藏和输出。 输入 输入是BP
    的头像 发表于 07-03 11:02 371次阅读

    bp神经网络和卷积神经网络区别是什么

    结构、原理、应用场景等方面都存在一定的差异。以下是对这两种神经网络的比较: 基本结构 BP神经网络是一种多层前馈神经网络,由输入、隐藏
    的头像 发表于 07-03 10:12 942次阅读

    BP神经网络算法的基本流程包括

    BP神经网络算法,即反向传播(Backpropagation)神经网络算法,是一种多层前馈神经网络,通过反向传播误差训练网络权重。BP
    的头像 发表于 07-03 09:52 392次阅读

    卷积神经网络的原理与实现

    核心思想是通过卷积操作提取输入数据的特征。与传统的神经网络不同,卷积神经网络具有参数共享和局部连接的特点,这使得其在处理图像等高维数据时具有更高的效率和更好的性能。 卷积 卷积是卷
    的头像 发表于 07-02 16:47 488次阅读

    反向传播神经网络模型的特点

    反向传播神经网络(Backpropagation Neural Network,简称BP神经网络)是一种多层前馈神经网络,它通过反向传播算法训练
    的头像 发表于 07-02 14:14 336次阅读

    如何训练这些神经网络解决问题?

    神经网络建模中,经常会出现关于神经网络应该有多复杂的问题,即它应该有多少,或者它的滤波器矩阵应该有多大。这个问题没有简单的答案。与此相关,讨论网络过拟合和欠拟合非常重要。过拟合是模
    发表于 11-24 15:35 691次阅读
    如何训练这些<b class='flag-5'>神经网络</b><b class='flag-5'>来</b>解决问题?