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

相关推荐
智算菩萨10 分钟前
GPT-5.4 进阶思考模式全面解析:从推理等级到实战提示词,代码、论文、数据处理一站通
人工智能·gpt·深度学习·机器学习·语言模型·自然语言处理·chatgpt
易知微EasyV数据可视化12 分钟前
数字孪生+AI:某国家级技术科研机构:耦合仿真评估部件性能,长期运维监测承压状态
人工智能·经验分享·物联网·数字孪生·空间智能
六个点15 分钟前
A2A协议入门:构建Agent之间的通信标准
人工智能
大学有意思15 分钟前
广西英华国际职业学院新能源汽车技术专业2026年权威解析
人工智能·机器人
枫叶林FYL15 分钟前
【自然语言处理 NLP】 大语言模型(LLM)系统工程(Large Language Model Engineering)5.1.2 ZeRO与显存优化技术
人工智能·深度学习·机器学习
Flying pigs~~16 分钟前
基于huggingface库Trainer实现Bert文本分类实战
人工智能·自然语言处理·bert·文本分类·huggingface·trainer
Gale2World19 分钟前
专题九:【终局演进】从“单体网关”到去中心化集群:分布式数字员工(Swarm)的宏大涌现
人工智能·agent
天天代码码天天20 分钟前
C# OnnxRuntime BEN2 前景分割
人工智能
moers20 分钟前
从cosh到AgentSecCore:拆解阿里云Agentic OS的四个技术决策
人工智能
饼干哥哥20 分钟前
RPA也被AI干死了!!一键生成监听100个小红书博主的工作流
人工智能