人工智能之Tensorflow批标准化

news2024/9/27 19:24:10

批标准化(Batch Normalization,BN)是为了克服神经网络层数加深导致难以训练而诞生的。

随着神经网络的深度加深,训练会越来越困难,收敛速度会很慢,常常会导致梯度消失问题。梯度消失问题是在神经网络中,当前隐藏层的学习速率低于后面隐藏层的学习速率,即随着隐藏层数目的增加分类准确率反而下降,这种现象叫梯度消失问题。

传统机器学习中有一个ICS理论,这是一个经典假设:源域(Source Domain)和目标域(Target Domain)的数据分布是一致的,也就是说,训练数据和测试数据是满足相同分布的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障

协变量转移(Covariate Shift)是指当训练集的样本数据和目标集样本分布不一致时,训练得到的模型无法很好地泛化。它是分布不一致假设之下的分支,也就是之源域和目标域的条件概率是一致的,但是边缘概率不同。
对于神经网络的各层输出,在经过层内操作之后,各层输出分布就会与对应的输入信号分布不同,而且差异会随着网络深度增大而增大,但是每一层所指向的样本标记仍然是不变的。

解决思路:根据训练样本的比例对训练样本做一个矫正,因此,通过引入批标准化来规范某些层或者所有层的输入,从而固定每层输入信号的均值与方差

批标准化一般用在非线性映射(激活函数)之前,对于 x = W u + b x=Wu+b x=Wu+b做规范化,使结果(输出信号各个维度)的均值为0,方差为1。让每一层的输入有一个稳定的分布会有利于网络的训练。批标准化通过规范化让激活函数分布在线性区间,结果就是加大了梯度,让模型更加大胆地进行梯度下降。

批标准化具有以下几个优点:

  1. 加大探索的步长,从而加快收敛的速度。
  2. 更容易跳出局部最小值。
  3. 破坏原来的数据分布,在一定程度上缓解过拟合。

对每一次的Wx_plus_b 进行批标准化,这个步骤放在激活函数之前,示例片段如下:

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
out_size=10
w=tf.Variable(tf.ones([out_size]))
u=tf.Variable(tf.ones([out_size]))
b=tf.Variable(tf.ones([out_size]))
Wx_plus_b=w*u+b
#计算Wx_plus_b的均值和方差,其中axex=[0]表示想要标准化的维度
fc_mean,fc_var=tf.nn.moments(Wx_plus_b,axes=[0])
scale=tf.Variable(tf.ones([out_size]))
shift=tf.Variable(tf.zeros([out_size]))
epsilon=0.001

Wx_plus_b=tf.nn.batch_normalization(Wx_plus_b,fc_mean,fc_var,shift,scale,epsilon)
#下面两步等同用于上面一步
#Wx_plus_b=(Wx_plus_b-fc_mean)/tf.sqrt(fc_var+0.001)
#Wx_plus_b=Wx_plus_b?scale+shift

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1541819.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ffmpeg实现媒体流解码

本期主要讲解怎么将MP4媒体流的视频解码为yuv,音频解码为pcm数据;在此之前我们要先了解解复用和复用的概念; 解复用:像mp4是由音频和视频组成的(其他内容流除外);将MP4的流拆分成视频流(h264或h265等)和音频流(AAC或mp3等); 复用:就是将音频和视频打包成MP4或者fl…

数据可视化-ECharts Html项目实战(6)

在之前的文章中,我们学习了如何设置散点图、雷达图。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢数据可视化-ECharts Html项目实战(5&a…

网络分类简述与数据链路层协议(PPP)

实验拓扑 实验要求 1、R1和R2使用PPP链路直连,R2和R3把2条PPP链路捆绑为PPP MP直连按照图示配置IP地址 2、R2对R1的PPP进行单向chap验证 3、R2和R3的PPP进行双向chap验证 实验思路 给R1、R2的S3/0/0接口配置IP地址,已给出网段192.168.1.0/24R2作为主…

人工智能之Tensorflow变量作用域

在TensoFlow中有两个作用域(Scope),一个时name_scope ,另一个是variable_scope。variable_scope主要给variable_name加前缀,也可以给op_name加前缀;name_scope给op_name加前缀。 variable_scope 通过所给的名字创建或…

分类预测 | Matlab实现MTF-CNN-Mutilhead-Attention马尔可夫转移场卷积网络多头注意力机制多特征分类预测/故障识别

分类预测 | Matlab实现MTF-CNN-Mutilhead-Attention马尔可夫转移场卷积网络多头注意力机制多特征分类预测/故障识别 目录 分类预测 | Matlab实现MTF-CNN-Mutilhead-Attention马尔可夫转移场卷积网络多头注意力机制多特征分类预测/故障识别分类效果基本介绍模型描述程序设计参考…

STM32学习笔记(3_2)- GPIO输入和C语言

无人问津也好,技不如人也罢,都应静下心来,去做该做的事。 最近在学STM32,所以也开贴记录一下主要内容,省的过目即忘。视频教程为江科大(改名江协科技),网站jiangxiekeji.com 本期介…

idea maven配置

修改maven的路径&#xff08;使用本地的Maven&#xff09;&#xff0c;以及修改settings文件的位置和本地仓库的位置。 -DarchetypeCataloginternal 配置阿里云镜像&#xff08;在setting.xml文件中配置&#xff09; <!-- 配置阿里云 --> <mirror> <id>…

javase day11笔记

第十一天课堂笔记 构造代码块 { } 给 所有对象 共性特点 进行初始化操作 创建对象时在堆区对象中存放实例变量,同时执行构造代码块 执行顺序:静态代码块—>非静态代码块—>构造方法 继承★★★ 将多个类中相同的实例变量和实例方法 , 单独存放到一个类中,成为父类…

政安晨:【深度学习部署】—— TensorFlow Extended(TFX)介绍

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎机器学习 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 前言 TensorFlow Extended&#xff08;TFX&a…

代数结构与数理逻辑:3.环

图1 环 14.1 环的定义与性质 环&#xff1a;代数系统 [ R ; ; ∗ ] [R;;*] [R;;∗]&#xff0c;其中&#xff0c;*为定义在 R R R上的二元运算&#xff0c;满足下述条件&#xff0c;对任意 a , b , c ∈ R a,b,c\in R a,b,c∈R, ​ 可结合、交换&#xff0c;且有单位元、逆元…

【Redis教程0x04】详解Redis的4个高级数据类型

引言 在【Redis教程0x03】中&#xff0c;我们介绍了Redis中常用的5种基础数据类型&#xff0c;我们再来回顾一下它们的使用场景&#xff1a; String&#xff1a;存储对象、url、计数、分布式锁&#xff1b;List&#xff1a;消息队列&#xff1b;Hash&#xff1a;存储对象、购…

2024年大模型面试准备(二):LLM容易被忽略的Tokenizer与Embedding

分词和嵌入一直是LM被忽略的一部分。随着各大框架如HF的不断完善&#xff0c;大家对tokenization和embedding的重视程度越来越低&#xff0c;到现在初学者大概只能停留在调用tokenizer.encode这样的程度了。 知其然不知其所以然是很危险的。比如你要调用ChatGPT的接口&#xf…

mysql迁移达梦数据库 Java踩坑合集

达梦数据库踩坑合集 文章目录 安装达梦设置大小写不敏感Spring boot引入达梦驱动&#xff08;两种方式&#xff09;将jar包打入本地maven仓库使用国内maven仓库&#xff08;阿里云镜像&#xff09; 达梦驱动yml配置springboot mybatis-plus整合达梦,如何避免指定数据库名&…

进程和线程,线程实现的几种基本方法

什么是进程&#xff1f; 我们这里学习进程是为了后面的线程做铺垫的。 一个程序运行起来&#xff0c;在操作系统中&#xff0c;就会出现对应的进程。简单的来说&#xff0c;一个进程就是跑起来的应用程序。 在电脑上我们可以通过任务管理器可以看到&#xff0c;跑起来的应用程…

C语言 04 基本数据类型

整数 整数就是不包含小数点的数字&#xff0c;整数包含以下几种类型&#xff1a; short &#xff1a;占用 2 个字节&#xff0c;16 个 bit 位。int&#xff1a;占用 4 个字节&#xff0c;32 个 bit 位&#xff0c;能够表示 -2^32 到 2^32 之间的数字&#xff0c;默认使用这种…

Open CASCADE学习|最小二乘法拟合直线

最小二乘法&#xff0c;又称最小平方法&#xff0c;起源于十八世纪的大航海探索时期&#xff0c;发展于天文领域和航海领域。其历史可以追溯到法国科学家马里勒让德于1805年首次提出这一概念&#xff0c;而1809年&#xff0c;高斯在他的著作《天体运动论》中也提出了最小二乘法…

LangChain核心模块 Model I/O

Model I/O 任何语言模型应用程序的核心元素都是模型。LangChain 为您提供了与任何语言模型交互的构建块。 Models llm 和 chat_model 都是表示特定模型配置的对象。 LLM 对象将字符串作为输入和输出字符串。ChatModel 对象将消息列表作为输入并输出消息。 LLM 返回一个字符…

idea创建angular项目

1.idea创建项目 idea&#xff1a;2023.2.3版本 不做赘述&#xff0c;我这里是创建模块&#xff0c;创建项目的话大同小异 2.创建完成后注意一下红色部分&#xff0c;后期需要 3.进入项目根目录 注意&#xff1a;一定要进入项目根目录&#xff0c;就是我们上面红色方框部分&a…

研华工控机610L学习笔记1:基本了解与认识

今日开始学习一些工控机的基本知识&#xff1a; 目录 目录 1、工控机介绍&#xff1a; 2、研华610L说明书参数了解&#xff1a; 3、基本结构了解&#xff1a; 前面板&#xff1a; 后窗&#xff1a; 4.RS232串口&#xff1a; ​编辑 5、工控机分类&#xff1a; 6、工控上…

第四十五周:文献阅读

目录 摘要 Abstract 文献阅读&#xff1a;基于注意力的双向LSTM和编码器-解码器的水质预测 现有问题 提出方法 创新点 方法论 1、EMD&#xff08;经验模态分解&#xff09; 2、VMD&#xff08;变分模态分解&#xff09; 3、VBAED模型 研究实验 数据集 数据预处理 …