Tensorflow学习之tf.keras(一) tf.keras.layers.BatchNormalization
标准化 输入/激活函数
tf.keras.layers.BatchNormalization( axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True, beta_initializer='zeros', gamma_initializer='ones', moving_mean_initializer='zeros', moving_variance_initializer='ones', beta_regularizer=None, gamma_regularizer=None, beta_constraint=None, gamma_constraint=None, renorm=False, renorm_clipping=None, renorm_momentum=0.99, fused=None, trainable=True, virtual_batch_size=None, adjustment=None, name=None, **kwargs ) |
将每批前一层的激活量标准化,即进行转换,使平均激活量接近0,激活标准差接近1
批处理规范化在几个关键方面与其他层不同:
- 在训练模式下添加BatchNormalization到模型中,会导致一个example的结果取决于minibatch中的其他example。在填充batches或mask example的时候要小心,因为它们可能会更改minibatch统计信息并影响其他example
- 权重的更新基于模型的前向传递,而不是基于梯度计算的结果。
- 当使用包含批处理归一化的模型执行推理时,通常希望使用累积的统计信息而不是小批量的统计信息。这是通过training=False在调用模型时传递 或使用model.predict来完成的。
参数
axis |
整数,需要规范化的轴(通常是特征轴)。例如,在二维卷积层中,data_format="channels_first",(batch_size, channels,height, width)则在BatchNormalization中设置axis=1 |
|
momentum |
平均移动的动量 |
|
epsilon |
将小浮点数添加到方差以避免被零除。 |
|
center |
若为True,增加偏移beta到规范化张量中,若为否,则忽略beta |
|
scale |
如果为True,则乘以gamma。如果为False,gamma则不使用。当下一层是线性的(例如nn.relu)时,可以禁用此功能,因为缩放将由下一层完成。 |
|
beta_initializer |
|
|
gamma_initializer |
gamma权重的初始化 |
|
moving_mean_initializer |
移动均值的初始化 |
|
moving_variance_initializer |
移动方差的初始化 |
|
beta_regularizer |
Beta权重的可选正则化器 |
|
gamma_regularizer |
伽玛权重的可选正则器 |
|
beta_constraint |
Beta权重的可选约束 |
|
gamma_constraint |
gamma权重的可选约束 |
|
renorm |
是否使用Batch Renormalization。这在训练过程中增加了额外的变量。此参数的任意值的推断都是相同的。 |
|
renorm_clipping |
一个用于将键'rmax', 'rmin', 'dmax'映射到张量的字典,用于附加到renorm校正。校正(r,d)被用作corrected_value = normalized_value * r + d, r 附加到[rmin, rmax], d到[-dmax, dmax]。缺失的rmax, rmin, dmax分别设置为inf, 0, inf。 |
|
renorm_momentum |
用于更新移动均值和标准偏差与rennorm,不同于momentum,它会影响训练,既不能太小(会增加噪声)也不能太大。注意momentum仍然用于推断得到均值和方差 |
|
fused |
如果True使用,则使用更快的融合实现;如果无法使用融合的实现,则引发ValueError。如果为None,请尽可能使用更快的实现。如果为False,则不要使用融合的实现。 |
|
trainable |
布尔值,如果True变量将被标记为可训练的。 |
|
virtual_batch_size |
int型。默认情况下,virtual_batch_size为None,这意味着在整个批处理中执行批标准化。当virtual_batch_size不是None时,执行“Ghost Batch Normalization”,这将创建每个单独规范化的虚拟子批(使用共享的gamma、beta和移动统计数据)。执行时必须划分实际批大小。 |
|
adjustment |
调用参数
inputs |
输入张量 |
training |
Python布尔值,指示该层是应在训练模式下还是在推理模式下运行。 training=True:该层将使用当前输入批次的均值和方差对输入进行归一化 training=False:该层将使用在训练中学习到的移动统计数据的均值和方差对其输入进行归一化。 |
输入形状:任意。input_shape当将此层用作模型的第一层时,请使用关键字参数(整数元组,不包括样本轴)。输出形状:与输入相同的形状。
Tensorflow学习之tf.keras(一) tf.keras.layers.BatchNormalization相关推荐
- TensorFlow学习笔记(九)tf搭建神经网络基本流程
1. 搭建神经网络基本流程 定义添加神经层的函数 1.训练的数据 2.定义节点准备接收数据 3.定义神经层:隐藏层和预测层 4.定义 loss 表达式 5.选择 optimizer 使 loss 达到 ...
- TensorFlow学习笔记12----Creating Estimators in tf.contrib.learn
原文教程:tensorflow官方教程 记录关键内容与学习感受.未完待续.. Creating Estimators in tf.contrib.learn --tf.contrib.learn框架, ...
- TensorFlow学习--指数移动平均/tf.train.ExponentialMovingAverage
时间序列模型 时间序列是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列.时间序列分析的主要目的是根据已有的历史数据对未来进行预测.处理与时间相关数据的方法叫做时间序列模型. 当一个平稳序列 ...
- TensorFlow学习笔记(十七)tf.nn.conv2d
在给定的4D input与filter下计算2D卷积输入shape为[batch, height, width, in_channels] TensorFlow的CNN代码中有 tf.nn.conv2 ...
- TensorFlow学习笔记(十)tf搭建神经网络可视化结果
代码 """ Please note, this code is only for python 3+. If you are using python 2+, plea ...
- 深度学习框架 TensorFlow:张量、自动求导机制、tf.keras模块(Model、layers、losses、optimizer、metrics)、多层感知机(即多层全连接神经网络 MLP)
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 安装 TensorFlow2.CUDA10.cuDNN7.6. ...
- TensorFlow 学习(七) — 常用函数 api、tf.nn、tf.keras
0. 四则运算 平方:tf.square(),开方:tf.sqrt() tf.add().tf.sub().tf.mul().tf.div().tf.mod().tf.abs().tf.neg() 1 ...
- Keras vs tf.keras: 在TensorFlow 2.0中有什么区别?
导读 在本文中,您将发现Keras和tf.keras之间的区别,包括TensorFlow 2.0中的新增功能. 万众期待的TensorFlow 2.0于9月30日正式发布. 虽然肯定是值得庆祝的时刻, ...
- Keras与tf.keras:TensorFlow 2.0有什么区别?
在本教程的第一部分中,我们将讨论Keras和TensorFlow之间相互交织的历史,包括他们共同的受欢迎程度如何相互滋养,相互促进和滋养,使我们走向今天. 然后,我将讨论为什么您应该在以后的所 ...
最新文章
- 机器学习与高维信息检索 - Note 4 - 主成分分析及其现代解释(Principal Component Analysis, PCA)及相关实例
- 在线作图|在线做UMAP降维分析
- phpexcel_cell 获取表格样式_Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行...
- Flask实战第41天:发送短信验证码
- linux下makefile中cp,make与makefile 的理解
- PHP 在服务端的应用概述
- Go语言中的io.Reader和io.Writer以及它们的实现
- drools 7.11 复杂事件处理详解
- 每天5分钟玩转kubernetes_DNS 访问 Service 每天5分钟玩转 Docker 容器技术(138)
- C语言读取文件大量数据到数组
- 现代软件工程—构建之法---第四章:练习与讨论
- iframe下session cookies失效
- MS Sql Server查询磁盘的可用空间,数据库数据文件及日志文件的大小及利用率
- ARINC429协议芯片DEI1016工作原理
- 泰迪杯数据挖掘挑战赛—数据预处理(二)
- python拆分excel列_python自动化办公:实现按照一列内容拆分excel
- Radon 变换原理和应用
- python绘制隐含波动率曲面_隐含波动率曲面
- 检测华为网络设备的常用命令
- 2台计算机网线连接无法ping通,两台电脑PING不通怎么办?