模型调优没效果? 不妨试试Batch Normalization!

简介:

今儿调模型大佬又给支了一招,叫Batch Normalization(下面简称BN),虽然还没有深刻理解这玩意是什么,但是是真的挺有效的,哈哈。因此本文只是总结一下BN的具体操作流程以及如何用tensorflow来实现BN,对于BN更深层次的理解,为什么要BN,BN是否真的有效大家可以参考知乎上的回答:https://www.zhihu.com/question/38102762

1、BN的流程

传统的神经网络,只是在将样本x进入到输入层之前对x进行0-1标准化处理(减均值,除标准差),以降低样本间的差异性,如下图所示:

136628563e79500b4b25e0475a403839d4270bd1

BN是在此基础上,不仅仅只对输入层的输入数据x进行标准化,还对每个隐藏层的输入进行标准化,如下图所示:

0200dfc6162970949bb91774bbb076176a98faf3

可以看到,由标准化的x得到第二层的输入h1的时候,经历了如下的步骤:

1、第一层的权重项w 和 输入x想成,得到s1
2、对s1进行0-1均值方差标准化,得到s2
3、设置两个参数γ 和 β ,计算γ * s1 + β 得到s3。注意,这里的γ 和 β是网络要学习的变量。
4、将s3经过激活函数激活之后得到h1

哎,BN的流程原来是这样的。。早上的时候看的太快,以为就是对每一层的输入做一个0-1标准化,再加一个γ 和 β呢。唉,得好好反思反思,明天罚自己减一个鸡腿。废话不多说,我们来看看实现吧。

2、tensorflow实现BN

tensorflow实现BN是很简单的,只需要两个函数就可以。

tf.nn.moments

该函数的样例如下:

 

batch_mean, batch_var = tf.nn.moments(data, [0])

可以看到,我们输入的第一个参数是我们的data,一定要记住,这个data是w*x之后的。第二个参数是我们要在哪一维做标准化,如果是二维数据,通常每一列代表的是一个特征,因此我们一般选择axis=[0],如果你想对所有的数据做一个标准化,那么axis=[0,1]。

tf.nn.batch_normalization

该函数的样例如下:

 

tf.nn.batch_normalization(
data,
mean,
variance,
offset,
scale,
variance_epsilon,
name= None
)

我们需要输入我们的data,即w*x,然后还有刚刚用moments函数得到的均值和方差,scala和offset即前文提到的的γ 和 β ,这是两个Variable。

完整实例
最后来看一个完整实例吧:

 

batch_mean, batch_var = tf.nn.moments(data, [0])
scale2 = tf.Variable(tf.ones([units]))
beta2 = tf.Variable(tf.zeros([units]))
data = tf.nn.batch_normalization(data, batch_mean, batch_var, beta2, scale2,variance_epsilon=1e-3)

参考资料:https://blog.csdn.net/whitesilence/article/details/75667002


原文发布时间为:2018-08-22

本文作者:文文

本文来自云栖社区合作伙伴“Python爱好者社区”,了解相关信息可以关注“Python爱好者社区”。

相关文章
|
存储 人工智能 分布式计算
AIGC背后的技术解读
人工智能(AI)是当前科技领域的热门话题,许多公司都在积极探索AI技术的应用。阿里云是国内领先的云计算服务提供商,也是AI技术的先行者之一。在阿里云的AI产品中,AIGC(AI Graph Computing)是一个备受关注的技术,它能够帮助用户快速构建和管理大规模的图计算系统。本文将对AIGC背后的技术进行解读,探讨其在图计算领域的应用和优势。
550 1
|
1天前
|
人工智能 自然语言处理 Shell
🦞 如何在 Moltbot 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
🦞 如何在 Moltbot 配置阿里云百炼 API
|
5天前
|
人工智能 API 开发者
Claude Code 国内保姆级使用指南:实测 GLM-4.7 与 Claude Opus 4.5 全方案解
Claude Code是Anthropic推出的编程AI代理工具。2026年国内开发者可通过配置`ANTHROPIC_BASE_URL`实现本地化接入:①极速平替——用Qwen Code v0.5.0或GLM-4.7,毫秒响应,适合日常编码;②满血原版——经灵芽API中转调用Claude Opus 4.5,胜任复杂架构与深度推理。
|
9天前
|
JSON API 数据格式
OpenCode入门使用教程
本教程介绍如何通过安装OpenCode并配置Canopy Wave API来使用开源模型。首先全局安装OpenCode,然后设置API密钥并创建配置文件,最后在控制台中连接模型并开始交互。
4307 8
|
15天前
|
人工智能 JavaScript Linux
【Claude Code 全攻略】终端AI编程助手从入门到进阶(2026最新版)
Claude Code是Anthropic推出的终端原生AI编程助手,支持40+语言、200k超长上下文,无需切换IDE即可实现代码生成、调试、项目导航与自动化任务。本文详解其安装配置、四大核心功能及进阶技巧,助你全面提升开发效率,搭配GitHub Copilot使用更佳。
|
2天前
|
人工智能 自然语言处理 Cloud Native
大模型应用落地实战:从Clawdbot到实在Agent,如何构建企业级自动化闭环?
2026年初,开源AI Agent Clawdbot爆火,以“自由意志”打破被动交互,寄生社交软件主动服务。它解决“听与说”,却缺“手与脚”:硅谷Manus走API原生路线,云端自主执行;中国实在Agent则用屏幕语义理解,在封闭系统中精准操作。三者协同,正构建AI真正干活的三位一体生态。
2127 6
|
22小时前
|
存储 安全 数据库
使用 Docker 部署 Clawdbot(官方推荐方式)
Clawdbot 是一款开源、本地运行的个人AI助手,支持 WhatsApp、Telegram、Slack 等十余种通信渠道,兼容 macOS/iOS/Android,可渲染实时 Canvas 界面。本文提供基于 Docker Compose 的生产级部署指南,涵盖安全配置、持久化、备份、监控等关键运维实践(官方无预构建镜像,需源码本地构建)。
797 2
|
17天前
|
存储 人工智能 自然语言处理
OpenSpec技术规范+实例应用
OpenSpec 是面向 AI 智能体的轻量级规范驱动开发框架,通过“提案-审查-实施-归档”工作流,解决 AI 编程中的需求偏移与不可预测性问题。它以机器可读的规范为“单一真相源”,将模糊提示转化为可落地的工程实践,助力开发者高效构建稳定、可审计的生产级系统,实现从“凭感觉聊天”到“按规范开发”的跃迁。
2524 18