神经网络基础-神经网络补充概念-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,有助于模型的正则化,减少过拟合问题。

相关推荐
烟锁池塘柳013 分钟前
【深度学习】强化学习(Reinforcement Learning, RL)主流架构解析
人工智能·深度学习·机器学习
一尘之中27 分钟前
全素山药开发指南:从防痒处理到高可用食谱架构
人工智能
加油吧zkf1 小时前
水下目标检测:突破与创新
人工智能·计算机视觉·目标跟踪
加油吧zkf1 小时前
AI大模型如何重塑软件开发流程?——结合目标检测的深度实践与代码示例
开发语言·图像处理·人工智能·python·yolo
峙峙峙1 小时前
线性代数--AI数学基础复习
人工智能·线性代数
weiwuxian1 小时前
揭开智能体的神秘面纱:原来你不是"超级AI"!
人工智能
Codebee1 小时前
“自举开发“范式:OneCode如何用低代码重构自身工具链
java·人工智能·架构
说私域1 小时前
基于开源AI智能名片链动2+1模式的S2B2C商城小程序:门店私域流量与视频号直播融合的生态创新研究
人工智能·小程序·开源
Ronin-Lotus2 小时前
深度学习篇---Yolov系列
人工智能·深度学习
静心问道2 小时前
GoT:超越思维链:语言模型中的有效思维图推理
人工智能·计算机视觉·语言模型