我的编程空间,编程开发者的网络收藏夹
学习永远不晚

批标准化层tf.keras.layers.Batchnormalization()解析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

批标准化层tf.keras.layers.Batchnormalization()解析

批标准化层 tf.keras.layers.Batchnormalization()

tf.keras.layers.Batchnormalization()

重要参数:

  • training:布尔值,指示图层应在训练模式还是在推理模式下运行。
  • training=True:该图层将使用当前批输入的均值和方差对其输入进行标准化。
  • training=False:该层将使用在训练期间学习的移动统计数据的均值和方差来标准化其输入。

BatchNormalization 广泛用于 Keras 内置的许多高级卷积神经网络架构,比如 ResNet50、Inception V3 和 Xception。

BatchNormalization 层通常在卷积层或密集连接层之后使用。

批标准化的实现过程

  • 求每一个训练批次数据的均值
  • 求每一个训练批次数据的方差
  • 数据进行标准化
  • 训练参数γ,β
  • 输出y通过γ与β的线性变换得到原来的数值

在训练的正向传播中,不会改变当前输出,只记录下γ与β。在反向传播的时候,根据求得的γ与β通过链式求导方式,求出学习速率以至改变权值。

对于预测阶段时所使用的均值和方差,其实也是来源于训练集。比如我们在模型训练时我们就记录下每个batch下的均值和方差,待训练完毕后,我们求整个训练样本的均值和方差期望值,作为我们进行预测时进行BN的的均值和方差。

批标准化的使用位置

原始论文讲在CNN中一般应作用与非线性激活函数之前,但是,实际上放在激活函数之后效果可能会更好。

# 放在非线性激活函数之前
model.add(tf.keras.layers.Conv2D(64, (3, 3)))
model.add(tf.keras.layers.BatchNormalization())
model.add(tf.keras.layers.Activation('relu'))

# 放在激活函数之后
model.add(tf.keras.layers.Conv2D(64, (3, 3), activation='relu'))
model.add(tf.keras.layers.BatchNormalization())

tf.keras.layers.BatchNormalization使用细节

关于keras中的BatchNormalization使用,官方文档说的足够详细。本文的目的旨在说明在BatchNormalization的使用过程中容易被忽略的细节。

在BatchNormalization的Arguments参数中有trainable属性;以及在Call arguments参数中有training。两个都是bool类型。第一次看到有两个参数的时候,我有点懵,为什么需要两个?

后来在查阅资料后发现了两者的不同作用。

1,trainable是Argument参数,类似于c++中构造函数的参数一样,是构建一个BatchNormalization层时就需要传入的,至于它的作用在下面会讲到。

2,training参数时Call argument(调用参数),是运行过程中需要传入的,用来控制模型在那个模式(train还是interfere)下运行。关于这个参数,如果使用模型调用fit()的话,是可以不给的(官方推荐是不给),因为在fit()的时候,模型会自己根据相应的阶段(是train阶段还是inference阶段)决定training值,这是由learning——phase机制实现的。

重点

关于trainable=False:如果设置trainable=False,那么这一层的BatchNormalization层就会被冻结(freeze),它的trainable weights(可训练参数)(就是gamma和beta)就不会被更新。

注意:freeze mode和inference mode是两个概念。

但是,在BatchNormalization层中,如果把某一层BatchNormalization层设置为trainable=False,那么这一层BatchNormalization层将一inference mode运行,也就是说(meaning that it will use the moving mean and the moving variance to normalize the current batch, rather than using the mean and variance of the current batch).

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

批标准化层tf.keras.layers.Batchnormalization()解析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

批标准化层tf.keras.layers.Batchnormalization()解析

这篇文章主要介绍了批标准化层tf.keras.layers.Batchnormalization(),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-21

批标准化层tf.keras.layers.Batchnormalization的使用位置是什么

这篇文章主要介绍“批标准化层tf.keras.layers.Batchnormalization的使用位置是什么”,在日常操作中,相信很多人在批标准化层tf.keras.layers.Batchnormalization的使用位置是什么问题
2023-07-05

Python数据标准化的实例分析

说明 1、将原始数据转换为均值为0,标准差在1范围内。 2、对标准化而言:如果出现异常点,由于有一定数据量,少量异常点对平均值的影响不大,因此方差变化不大。 实例def stand_demo():"""标准化:return:""" # 1.
2022-06-02

信息安全标准化知识基础分析

      信息安全标准是信息安全保障体系的重要组成部分,是政府进行宏观管理的重要手段。人们为了某一种目的和需要而提出一个统一性的要求,是对有某一范围内重复性事务和概念所做的统一规定,也就是人们所说的标准。它是一种较为特殊的文件,是为了能在一定的范围内获得最佳秩序,对活
信息安全标准化知识基础分析
2024-04-17

西门子标准报文111解析

提示:本文为学习交流,禁止转载 文章目录 一、报文介绍二、常用报文解析三、标准报文111控制字解析四、个人主页 一、报文介绍 • 标准报文 1:速度控制 • 标准报文 2:速度控制 • 标准报文 3:速度/位置控制(12
2023-08-21

怎么用批处理bat标准化获取当前系统日期

这篇文章主要介绍“怎么用批处理bat标准化获取当前系统日期”,在日常操作中,相信很多人在怎么用批处理bat标准化获取当前系统日期问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用批处理bat标准化获取当前系
2023-06-08

阿里云代理返佣标准解析

1.什么是阿里云代理返佣?阿里云代理返佣是指阿里云为代理商提供的一种奖励机制,代理商通过推广阿里云产品和服务,成功引导客户购买并产生消费,就可以获得一定比例的返佣。2.阿里云代理返佣标准如何确定?阿里云代理返佣标准是根据代理商的级别和推广的产品类型来确定的。阿里云根据代理商的业绩和贡献度,将代理商分为不同的级别,如钻石
2023-10-27

SDN北向接口标准化怎么理解

今天小编给大家分享一下SDN北向接口标准化怎么理解的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。SDN(软件定义网络Soft
2023-06-27

解析Golang标准库中的常用功能

Golang标准库中的常见功能解析作为一种强大且高效的编程语言,Golang在其标准库中提供了众多常见功能。本文将详细解析几个常见的功能,并提供具体的代码示例。一、文件操作创建和写入文件Golang的os包提供了创建和写入文件的功能
解析Golang标准库中的常用功能
2024-01-20

服务器安全:解锁标准化的威力

服务器安全对于保护敏感数据和抵御网络攻击至关重要。标准化在确保服务器安全方面发挥着至关重要的作用,通过提供最佳实践和指导。
服务器安全:解锁标准化的威力
2024-02-20

服务器操作系统标准化:投资回报分析

服务器操作系统标准化是一项战略举措,可通过提高效率、降低成本和增强安全性,为企业带来丰厚的投资回报率 (ROI)。
服务器操作系统标准化:投资回报分析
2024-02-29

常见Web标准及其实际案例解析

了解常见的Web标准及其实际应用案例在当今数字化时代,万维网已成为人们获取信息、进行交流和开展业务活动的重要平台。而Web标准则是保证网页在不同浏览器上正常显示和稳定运行的基础。本文将介绍一些常见的Web标准,并通过实际应用案例来说明它们
常见Web标准及其实际案例解析
2024-01-15

深度解析Java中的国际化底层类ResourceBundle

做项目应该都会实现国际化,那么大家知道Java底层是如何实现国际化的吗?这篇文章就来和大家深度解析一下Java中的国际化底层类ResourceBundle,希望对大家有所帮助
2023-03-10

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录