当前位置: 首页 > news >正文

虚拟主机如何分配网站世界十大营销策划公司

虚拟主机如何分配网站,世界十大营销策划公司,卖网站怎样做,网架加工工厂图片一、概念 Batch Normalization是在2015年提出的数据归一化方法,主要用在深度神经网络中激活层之前。它的主要作用是加快模型训练时的收敛速度,使模型训练过程更加稳定,避免梯度爆炸或消失,并起到一定的正则化作用,有时…

一、概念

        Batch Normalization是在2015年提出的数据归一化方法,主要用在深度神经网络中激活层之前。它的主要作用是加快模型训练时的收敛速度,使模型训练过程更加稳定,避免梯度爆炸或消失,并起到一定的正则化作用,有时甚至可以替代Dropout。

        BN可以应用于全连接层和卷积层,在非线性映射(激活函数)之前对数据进行规范化,使得结果的输出信号的各个维度均值为0,方差为1。这有助于网络的训练,特别是在梯度消失或爆炸的情况下

二、原理

        BN的核心思想是让每一层的输入保持一个稳定的分布,这样模型在训练时可以减少对输入分布变化的依赖,从而加速收敛并提升稳定性。具体来说,BN包含以下几个步骤:

1、计算小批量数据的均值和方差

         在每一层的输入特征图上,BN会在当前batch的数据上计算其均值和方差。

2、数据归一化

        BN对每一个样本的输出进行归一化处理,通过减去均值后再除以标准差,使得归一化后的输出数据具有零均值和单位方差的标准正态分布

3、缩放和平移

        直接归一化会限制模型的学习能力,因为归一化后的输出被严格限制在均值为0和方差为1的分布中。为了恢复模型的表达能力,BN引入了两个可学习的参数:缩放参数γ和偏移参数β,将归一化后的数据进行线性变换:

y_{i} = \gamma \frac{x_{i}- \mu_{B}}{\sqrt{\sigma^{2}_{B}+ \epsilon}} + \beta

        其中,\mu_{B}是均值;\sigma ^{2}_{B}是方差;\epsilon是一个极小值,用于防止分母为0;缩放参数γ和偏移参数β是可训练参数,参与整个网络的反向传播。

4、示例

        这里我们简单调用torch中的nn.BatchNorm1d来实现Batch Normalization。在torch中,训练模型时缩放参数γ和偏移参数β是自动更新的,不需要我们额外操作。

import torch
import torch.nn as nn# 假设我们有一个输入张量x和一个batch_size
x = torch.randn(6, 10)  # 例如,10维的特征,6是批次大小
print(x)# 实现Batch Normalization
batch_norm = nn.BatchNorm1d(10)  # 10是特征的维度
x_bn = batch_norm(x)
print(x_bn)

三、python应用

        这里,我们简单创建一个MLP,并对比BN前后的数据变化。

import torch
import torch.nn as nn
import matplotlib.pyplot as plt# 设置随机种子以确保结果可复现
torch.manual_seed(0)# 创建一个简单的模型
class SimpleModel(nn.Module):def __init__(self):super(SimpleModel, self).__init__()self.linear = nn.Linear(100, 50)  # 一个线性层self.bn = nn.BatchNorm1d(50)  # Batch Normalization层def forward(self, x):x = self.linear(x)x = self.bn(x)return x# 创建模型实例
model = SimpleModel()# 生成模拟数据:100个样本,每个样本100个特征
x = torch.randn(100, 100, requires_grad=True)# 前向传播,计算BN前的数据
x_linear = model.linear(x)
x_linear = x_linear.detach()# 计算BN前的数据均值和方差
mean_before = x_linear.mean(dim=0)
var_before = x_linear.var(dim=0)# 应用BN
x_bn = model(x)
x_bn = x_bn.detach()# 计算BN后的数据均值和方差
mean_after = x_bn.mean(dim=0)
var_after = x_bn.var(dim=0)# 绘制BN前后数据的分布
fig, ax = plt.subplots(2, 2, figsize=(12, 8))# 绘制BN前的数据分布
ax[0, 0].hist(x_linear.detach().numpy().flatten(), bins=30, color='blue', alpha=0.7)
ax[0, 0].set_title('Before BN: Data Distribution')# 绘制BN后的数据分布
ax[0, 1].hist(x_bn.detach().numpy().flatten(), bins=30, color='green', alpha=0.7)
ax[0, 1].set_title('After BN: Data Distribution')# 绘制BN前的数据均值和方差
ax[1, 0].bar(range(50), var_before, color='blue', alpha=0.7)
ax[1, 0].set_title('Before BN: Variance per Feature')
ax[1, 0].set_xticks(range(0, 50, 5))# 绘制BN后的数据均值和方差
ax[1, 1].bar(range(50), var_after, color='green', alpha=0.7)
ax[1, 1].set_title('After BN: Variance per Feature')
ax[1, 1].set_xticks(range(0, 50, 5))plt.tight_layout()
plt.show()# 打印BN前后的数据均值和方差
print(f"Mean before BN: {mean_before}")
print(f"Mean after BN: {mean_after}")
print(f"Variance before BN: {var_before}")
print(f"Variance after BN: {var_after}")

四、总结

        BN在模型架构搭建的过程中很常用,但也并不是必要的,例如我们在数据预处理的过程中就对数据进行了归一化的话,BN就显得不那么重要了。当然,加上BN在某些场景中也能够使得模型适应不同批次数据的分布变化,且一定程度可以减少内部协变量偏移。具体是否增加BN可以看加入之后是否提升了模型性能。

http://www.15wanjia.com/news/164347.html

相关文章:

  • 网站维护包括哪些工作wordpress 去掉评论数
  • 上海海宏建设集团网站淮南房地产网站建设网站
  • 装修设计那个网站好网站后台优化
  • 苏州设计网站公司手机版网站开发实例
  • 免费网站空间 - 百度凡科做的网站手机版
  • 苏州网站维护天津网站免费制作
  • 做ppt找图片在哪个网站品牌推广是做什么的
  • 后台建设电商网站整站优化推广
  • 怎么做网站登录界面wordpress gif动画
  • 上海建站 seo传媒公司取名字大全
  • 做网站备完备案需要干什么零基础建设网站教程
  • 三门峡网站优化wordpress建立视频网站
  • 贵阳网站制作免费百度如何搜索网址
  • 河南那家公司做家具行业网站好房地产网站策划
  • 免费建立网站的网站吗恢复wordpress修订版本号
  • 某公司网站建设策划创艺装饰公司口碑如何
  • wordpress企业网站实例装修第一网
  • 北京市网站设计-推广公司wordpress on line 66
  • o2o商城上的二级网站论文中网站数据如何做脚注
  • 做网站最简单建立自己的影视网站
  • 互联网营销型网站做网站530元
  • 米拓模板网站建设优化网站的方法
  • 长春小学网站建设平台做网站点击
  • 伪静态就是把网站地址免费虚拟主机官网
  • 网站建设公司华网天下官网wordpress 喜欢分享插件
  • 高效的网站建设网站目录 index.html
  • 电脑怎么打不开建设银行网站个人网站备案范围
  • 中企动力建的网站如何电话百度
  • 建设银行网站修改织梦网站模板套用
  • wordpress授权主题咖啡seo是什么意思