在tensorflow 1.4中,我发现了两个执行批处理规范化的函数,它们看起来相同:
tf.layers.batch_normalization
(链接)tf.contrib.layers.batch_norm
(链接)我应该使用哪个功能?哪一个更稳定?
只是添加到列表中,还有其他几种方法可以在tensorflow中进行批处理规范:
tf.nn.batch_normalization
是低级操作。调用者负责自己处理mean
和variance
张量。tf.nn.fused_batch_norm
是另一个低级操作,类似于上一个操作。不同之处在于它针对4D输入张量进行了优化,这在卷积神经网络中很常见。tf.nn.batch_normalization
接受任何大于1的等级的张量tf.layers.batch_normalization
是先前操作的高级包装。最大的区别在于,它负责创建和管理运行均值和方差张量,并在可能时调用快速融合的op。通常,这应该是您的 默认选择 。tf.contrib.layers.batch_norm
是批处理规范的早期实现,它已逐步升级为核心API(即tf.layers
)。不建议使用它,因为在将来的版本中可能会删除它。tf.nn.batch_norm_with_global_normalization
是另一个已弃用的操作。当前,将呼叫委托给tf.nn.batch_normalization
,但将来可能会中断。keras.layers.BatchNormalization
Keras层,在tensorflow后端调用的情况下可以使用tf.nn.batch_normalization
。我的问题是批处理规范化(BN)正在规范化什么。 我在问,BN是单独标准化每个像素的通道还是一起标准化所有像素的通道。它是在每张图像的基础上还是在整个批次的所有通道上进行的。 具体而言,BN在X上运行。比如说,。因此,当轴=3时,它在“c”维度上运行,即通道数(对于rgb)或特征图数。 因此,假设X是rgb,因此有3个通道。BN是否做到了以下几点:(这是BN的简化版本,用于讨论维度方面。我知道gam
我想出了以下几点:
问题内容: 在ICU项目(也现在有一个PHP库)中包含有需要帮助恢复正常UTF-8串类,使搜索时更容易地比较值。 但是,我试图弄清楚这对应用程序意味着什么。例如,在哪种情况下,我想要“规范对等”而不是“兼容性对等”,反之亦然? 问题答案: 规范化归一化 Unicode包括多种编码某些字符(最著名的是重音字符)的方法。规范化规范将代码点更改为规范编码形式。生成的代码点应与原始代码点相同,除非字体或渲
但似乎每个tensorflow实现(包括这个和官方的tensorflow实现)都使用(指数)移动平均和方差。 请原谅我,但我不明白为什么。是不是因为使用移动平均值对性能更好?还是纯粹为了计算速度? 参考:原稿
本文向大家介绍什么是数据标准化,为什么要进行数据标准化?相关面试题,主要包含被问及什么是数据标准化,为什么要进行数据标准化?时的应答技巧和注意事项,需要的朋友参考一下 数据标准化是预处理步骤,将数据标准化到一个特定的范围能够在反向传播中保证更好的收敛。一般来说,是将该值将去平均值后再除以标准差。如果不进行数据标准化,有些特征(值很大)将会对损失函数影响更大(就算这个特别大的特征只是改变了1%,但是
问题内容: 在Transact-SQL中,批处理是一组一起提交并作为一个组执行的SQL语句,一个接一个地执行。批处理可以存储在命令文件中。 包含多个SQL语句的* .sql文件是否被视为批处理?我们还认为批次是什么? 问题答案: 包含多个sql语句的* .sql文件是否被视为批处理? 有点。一个文件通常是一个批处理,但它也可能包含若干批次。您可以通过批处理分隔符来分隔单独的批处理。您可能需要在一个