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

使用Movidius神经计算棒进行vgg16算法预测 本文讨论在Ubuntu16.04的系统中使用Movidius神经计算棒,进行vgg16算法预测。 神经计算SDK官方网站https://movidius.github.io/ncsdk/install.html 1.首先在系统中安装python3.5,这里不再赘述。 2.然后进行神经计算SDK的安装,注意安装过程中记得将计算棒插入USB接口。 本文以NCSDK2的版本进行讲解,依次执行以下... 阅读详情

作者丨Nathan Hubens

来源丨AI公园

编辑丨极市平台

介绍

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,性能一点也没降。

【论文】BatchNorm BatchNorm主要解决的问题 机器学习领域有一个很重要的基础假设:iid(独立同分布),即训练数据和测试数据独立且服从同一分布 但是这一点并不符合真实的实践情况,BatchNorm 指出了下面两种问题: 『Internal Convariate Shift』 这个术语主要描述的是:在每一次迭代更新之后,上一层网络的输出数据经过这一层网络计算之后,数据的分布会发生变化,为下一层网络的学习带来了困难(神经网络本来就是学习数据的分布,要是分布一直在变,学习就很难了),这个现象我们就称为 Internal Co 阅读详情

相关推荐

Dropout与BN:原理、训练推理差异与工程避坑

在深度学习模型训练中,过拟合与数值不稳定是高频问题。Dropout和Batch Normalization(BN)分别从正则化与归一化两个基础机制切入:Dropout通过随机置零抑制神经元共适应,BN通过批统计量标准化激活分布、加速收敛。二者在训练态与推理态行为不同,涉及model.eval()、running_mean/running_var、batch size敏感度等工程细节,直接影响模型泛化、收敛速度和部署一致性。在CNN、Transformer、小batch训练及混合精度场景中,层顺序、统计量更新

weixin_29061465的博客 225

Batch Normalization推导过程

一、BN简介 Batch Normalization可谓深度学习的一大利器,可以大大提高训练速度,并带有正则化的效果。其能加速训练的原因是因为消除了每层输出结果中的特征偏移,例如我们在训练一个猫的检测器,如果当前batch中的猫均为白色,那么可能会导致训练过程中某一层的权重分布倾向于“颜色为白色”。然而猫有各种颜色,如果网络只拘泥于白色,会大大降低了训练速度。因此,对Batch Normaliz...

u010970514的博客 1205

YOLO模型归一化插件:从计算图优化到生产部署的工程实践

模型部署中的归一化插件,本质上是实现模型表示与推理流程的标准化。其核心原理是将不同框架训练的模型转换为统一的中间表示,通过计算图优化、算子融合、常量折叠等技术,解决模型在不同硬件平台上的兼容性与性能问题。这一过程的技术价值在于填平了从训练完成到生产部署的工程鸿沟,尤其在资源受限的边缘设备和推理框架中至关重要。应用场景广泛覆盖从NVIDIA GPU、Intel CPU到华为昇腾NPU等各类硬件平台。本文聚焦于YOLO模型的归一化插件推理,深入探讨了算子融合与内存布局优化等关键热词,以及如何通过系统性的工程实践

weixin_34192816的博客 360

Batch Normalization在推理时如何作用?

Batch Normalization(批归一化)是一种在深度学习中广泛使用的正则化技术,其主要目的是提高训练速度和稳定性。

Zzzzyc_的博客 1713

避开地图定位偏差!手把手教你用Python实现火星坐标与WGS84精准转换

本文深入解析了国内地图服务中火星坐标(GCJ-02)与国际标准WGS84坐标系之间的偏差问题,并提供了基于Python的精准转换解决方案。文章详细阐述了坐标转换的核心原理,手把手教你构建可复用的转换工具包,并演示如何将其集成到实际应用(如Flask API)中,帮助开发者和数据分析师有效解决地图定位不准、多源数据无法对齐的痛点,提升地理信息处理能力。

weixin_29250403的博客 125

仿真每日一练 | Workbench如何在网格节点施加载荷

打开Workbench 2020 R2,在分析系统中双击静力分析工程项目,双击Geometry打开Design Modeler,在菜单栏的单位(Units)修改为毫米(Millimeter),在XY平面创建草图,在草图内绘制矩形并标注尺寸,拉伸长方体,如图1所示。:单个零部件,无连接关系,但需定义一个节点组件,如图5所示,选择Create Named Selection。对添加的节点组件施加Y方向50N的力,如图8所示。1-1-3.有限元系统模型构建。1-1-1.几何模型构建。1-1-2.材料定义。

ansysxuexizhe的博客 1237

【骚操作】折叠Batch Normalization加速模型推理

点击上方“机器学习与生成对抗网络”,关注"星标"获取有趣、好玩的前沿干货!作者丨Nathan Hubens来源丨AI公园介绍Batch Normalization是将各层...

idol24的博客 343

vmware vsphere 证书过期告警处理方法

vSphere Clinet 管理页面出现“证书告警” ,检查证书未发现现有证书有过期现象

m0_51902127的博客 3639

深度学习算法优化系列十一 | 折叠Batch Normalization

好久不见,优化系列得继续更啊。。。前言今天来介绍一个工程上的常用Trick,即折叠Batch Normalization,也叫作折叠BN。我们知道一般BN是跟在卷积层后面,一般还会接上激...

Oner.wv的专栏 698

ImageNet分类实战:用PyTorch复现AlexNet的5个关键技巧(附代码)

本文详细介绍了使用PyTorch复现经典AlexNet模型进行ImageNet图像分类的五个关键工程技巧。内容涵盖模型架构的现代重构、训练策略优化、核心组件实现与替代方案,以及实用的训练调试方法,并提供了完整的代码示例,帮助开发者深入理解深度卷积神经网络的实现细节与优化思路。

i0j1k2l3m的博客 94

YOLOv11改进策略【损失函数篇】| arXiv2025 TeLU双曲正切指数线性单元 强梯度防消失 + 解析光滑稳训练,极速提升收敛与泛化

本文记录的是。TeLU(Hyperbolic Tangent Exponential Linear Unit)通过。本文利用TeLU激活函数,以x⋅tanhex统一实现正区间强梯度加速收敛与负区间持续梯度避免死神经元,全程保持解析光滑与极低计算开销,,显著提升深度网络在分类、检测、分割、时序任务中的收敛速度、精度与泛化鲁棒性。

Limiiiing的博客 224

深度学习正则化与加速:Dropout与Batch Normalization详解

在深度神经网络训练中,正则化技术和训练加速方法是提升模型性能的关键。Dropout通过随机屏蔽神经元防止过拟合,其本质是集成学习的隐式实现;Batch Normalization则通过标准化层输入分布来加速收敛,有效解决内部协变量偏移问题。这两种技术在计算机视觉和自然语言处理领域有广泛应用,如ResNet、Transformer等经典架构均采用它们作为基础组件。工程实践中,合理组合Dropout与BN能显著提升模型泛化能力,在电商评论分析、医疗影像识别等场景中验证准确率可提升2-3%。针对不同网络结构(CN

weixin_33711647的博客 360

【Autosar从入门到精通到进阶实战篇】75 0x34/0x36/0x37:请求下载、传输数据、请求退出——刷写流程的“三兄弟”

文章摘要:UDS刷写流程0x34/0x36/0x37关键实现要点 本文通过一个真实ECU变砖案例,揭示了UDS刷写服务(0x34请求下载、0x36传输数据、0x37请求退出)的实现陷阱与最佳实践。核心要点: 安全架构设计: 0x34阶段只协商参数,不立即擦除Flash 采用缓冲区暂存数据,避免频繁写Flash 严格检查地址对齐和内存边界 关键改进措施: 实现数据包序列号校验(防错位) 传输层缓冲区溢出保护 0x37阶段必须包含完整性校验(如CRC32) 一次性批量写入Flash,减少擦写次数 典型错误模式:

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 71

来聊聊批归一化BN(Batch Normalization)层

点击上方“AI算法修炼营”,选择加星标或“置顶”标题以下,全是干货一、Batch Normalization是什么?Batch Normalization (BN) 是最早出现的,也通常...

AI算法修炼营的博客 3684

Transformer实战(32)——Transformer模型压缩

在本节中,我们学习了如何在硬件资源受限的情况下减轻运行大模型的负担。我们介绍了如何通过蒸馏、剪枝和量化从训练好的模型中提取高效模型。预训练轻量级的通用语言模型(如 DistilBERT) 可以在各种任务上进行微调,并表现出与非蒸馏模型相当的性能。随着数据量的不断增加,我们希望模型能够更快地运行,在这方面,高效 Transformer 起着至关重要的作用。

盼小辉丶的博客 2605

Transformer实战(2)——循环神经网络详解

循环神经网络 (Recurrent neural networks, RNN) ,RNN 是在文本输入中广泛使用的神经网络。RNN 非常灵活,已被用于解决诸如语音识别、语言建模、机器翻译、情感分析和图像字幕等问题。RNN 利用输入的序列特性,序列输入可以是文本、语音、时间序列以及任何其他元素的出现取决于其前面元素的序列。在本节中,我们介绍了 RNN 及其变体,并学习如何使用 TensorFlow 进行实现。

盼小辉丶的博客 1万+

深入理解Batch Normalization:原理、实践与调参指南

神经网络训练中,梯度消失和收敛缓慢是常见难题,而Batch Normalization(BN)作为稳定深度网络训练的核心技术,通过归一化每层激活值有效缓解了这些痛点。本文从归一化原理出发,解析训练与推理阶段统计量的差异,并探讨损失平面平滑等深层机制。针对小batch场景,介绍Layer Norm、Group Norm等替代方案。同时结合工程实践,分享BN与Dropout的搭配、批量大小选择、推理阶段权重折叠等调参经验,帮助构建更稳定高效的深度模型。

weixin_29055699的博客 194

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

pit_ti_224.in1k模型优化技巧:提升推理速度与内存效率的完整指南

pit_ti_224.in1k是一款基于Pooling based Vision Transformer(PiT)架构的图像分类模型,具有4.8M参数和0.7 GMACs的高效特性。本文将分享5个实用优化技巧,帮助你在保持精度的前提下,显著提升该模型的推理速度和内存效率,让AI部署更轻松! ## 🚀 技巧1:启用模型量化加速推理 PyTorch的量化功能可以将模型参数从32位浮点数转换为8位整

gitblog_00292的博客 1075

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ONNX Simplifier深度解析:如何将复杂模型精简45%并提升推理性能

在深度学习模型部署的实际工程中,我们常常面临一个尴尬的现实:从PyTorch、TensorFlow等框架导出的ONNX模型,其结构往往比预期复杂数倍。这种"膨胀"不仅增加了模型体积,更严重影响了推理性能和部署效率。今天,我们将深入探讨ONNX Simplifier如何通过智能优化,将复杂模型精简45%以上,同时保持功能完整性。 ## 痛点剖析:为什么你的ONNX模型如此臃肿? 让我们从一个真实

gitblog_00535的博客 473

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

CANN triton-inference-server-ge-backend推理服务手把手实战:从ONNX模型到Triton推理服务的端到端部署流程

Python 程序员在交互式解释器会话上花费了大量时间。它非常适合测试短代码片段、访问文档、甚至在运行时调试代码。默认的 Python 交互式会话非常简单,并没有类似 tab补全或代码内省助手(code introspection helper)的许多功能。幸运的是,对默认 Python shell的扩展和定制是非常简单的。用一个启动文件就可以配置交互式提示符。Python 在启动时会寻找 PYTHONSTARTUP环境变量,并执行这一变量指向的文件中的代码。

qq_17776737的博客 218

OpenClaw性能优化:从GPU驱动到推理引擎的系统级排查指南

在深度学习模型部署中,推理性能瓶颈往往源于系统环境而非模型本身。理解GPU计算原理、CUDA驱动兼容性以及显存管理机制是优化基础。通过系统化诊断硬件资源匹配度与数据流转效率,可以显著提升服务吞吐量与响应速度。实践中,合理配置批处理、启用异步框架以及应用计算图优化技术,能够释放模型在真实场景中的潜力。本文聚焦OpenClaw等AI工具的性能调优,针对GPU初始化失败、显存溢出等常见工程问题,提供从基础设施到推理引擎的完整解决方案,帮助开发者快速定位瓶颈,实现高效稳定的模型服务化部署。

weixin_33695082的博客 391

Anthropic Claude零成本层:LLM推理架构压缩与部署优化

大语言模型推理中的‘计算层’概念,指代模型执行链中可被识别、抽象并优化的逻辑单元;其压缩原理源于编译期对低熵输入模式的形式化验证与图级折叠,技术价值在于将部分算力消耗从运行时移至编译期,实现计费维度上的归零;典型应用于结构化API调用、确定性输出格式(如JSON/YAML)、静态上下文场景,显著降低SaaS与企业级LLM服务的单位token推理开销;本文聚焦Anthropic Claude v4.6引入的‘零成本层’机制,深入解析其在schema感知归一化、语法约束前向掩码及上下文熵压缩三大计算域的落地实践

weixin_33748818的博客 413

MMGL:专为C++环境打造的Transformer模型高效推理库

深度学习模型推理是AI应用落地的关键环节,其核心在于将训练好的模型高效部署到生产环境中执行预测任务。传统方案依赖Python框架的运行时,存在依赖复杂、内存开销大、性能非极致等问题。通过静态计算图优化、算子融合和内存复用等技术,可以显著提升推理效率并简化部署流程。这些优化在边缘计算、工业视觉、自动驾驶等对性能和资源有严苛要求的场景中尤为重要。MMGL作为一个专注于Transformer架构的C++推理库,正是基于这一理念构建,它通过提供纯C++原生接口、针对Transformer算子的深度优化以及零外部深度

weixin_30608503的博客 383
上一篇: 一文读懂可解释机器学习简史,让你的模型再也不是“Black Box”
下一篇: 神器 Jupyter,终于来了!
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值