神经网络基础-神经网络补充概念-53-将batch norm拟合进神经网络

代码实现

python 复制代码
import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, BatchNormalization, Activation
from tensorflow.keras.optimizers import SGD

# 生成随机数据
np.random.seed(0)
X = np.random.rand(100, 10)
y = np.random.randint(2, size=(100, 1))

# 构建神经网络模型
model = Sequential()

# 添加输入层
model.add(Dense(32, input_dim=10))
model.add(BatchNormalization())
model.add(Activation('relu'))

# 添加隐含层
model.add(Dense(64))
model.add(BatchNormalization())
model.add(Activation('relu'))

# 添加输出层
model.add(Dense(1, activation='sigmoid'))

# 编译模型
model.compile(optimizer=SGD(lr=0.01), loss='binary_crossentropy', metrics=['accuracy'])

# 训练模型
model.fit(X, y, epochs=50, batch_size=32)

为什么BN会生效

梯度消失问题的缓解:在深度神经网络中,梯度消失是一个常见的问题,特别是在深层网络中。批归一化通过在每个批次内对输入进行标准化,使得激活函数的输入分布更稳定,从而减轻了梯度消失问题,使得梯度更容易传播,促进了训练过程的稳定性和效率。

加速收敛:由于批归一化在每个批次内对输入进行了标准化,网络的参数可以更快地收敛到合适的范围,从而加速了训练的收敛速度。这意味着在相同迭代次数下,批归一化的网络可以取得更好的效果。

模型稳定性:批归一化有助于减少模型在训练过程中的震荡,使得网络更加稳定。它通过对每个批次的统计信息进行标准化,减小了参数的更新幅度,从而减少了训练过程中的不稳定性。

泛化能力提升:批归一化对输入数据的标准化可以使模型对不同尺度、分布的数据更具有鲁棒性,从而提高了模型的泛化能力,使其在测试数据上表现更好。

正则化效果:批归一化在每个批次内引入了一些噪声,类似于 dropout,有助于模型的正则化,减少过拟合问题。

相关推荐
chenzhiyuan2018几秒前
YOLO + OpenPLC + ARMxy:工业智能化视觉识别、边缘计算、工业控制的“三位一体”解决方案
人工智能·yolo·边缘计算
大千AI助手23 分钟前
粒子群优化(PSO)算法详解:从鸟群行为到强大优化工具
人工智能·算法·优化算法·pso·粒子群优化
新手村领路人42 分钟前
飞桨paddlepaddle旧版本2.4.2安装
人工智能·paddlepaddle
Elastic 中国社区官方博客1 小时前
带地图的 RAG:多模态 + 地理空间 在 Elasticsearch 中
大数据·人工智能·elasticsearch·搜索引擎·ai·语言模型·全文检索
云卓SKYDROID1 小时前
无人机云台电压类型及测量方法
人工智能·目标跟踪·无人机·高科技·航线系统
云雾J视界1 小时前
AI时代技术面试重构:谷歌如何用Vibe Coding与抗作弊革命重塑招聘
人工智能·google·面试·重构·谷歌·ai工具·技术面试
BFT白芙堂1 小时前
GRASP 实验室研究 论文解读 | 机器人交互:基于神经网络引导变分推理的快速失配估计
人工智能·神经网络·机器学习·mvc·人机交互·科研教育机器人·具身智能平台
深蓝学院1 小时前
智源研究院新研究:突破物理世界智能边界的RoboBrain 2.0,将重构具身AI能力天花板
人工智能·重构
做萤石二次开发的哈哈1 小时前
萤石安全生产监管解决方案:构建企业安全智能化防护网
大数据·人工智能
万米商云1 小时前
碎片化采购是座金矿:数字化正重构电子元器件分销的价值链
大数据·人工智能·电子元器件·供应链采购