但似乎每个tensorflow实现(包括这个和官方的tensorflow实现)都使用(指数)移动平均和方差。
请原谅我,但我不明白为什么。是不是因为使用移动平均值对性能更好?还是纯粹为了计算速度?
参考:原稿
样本均值的精确更新规则只是一个步长等于逆样本大小的指数平均。因此,如果您知道样本大小,您可以将衰减因子设置为1/n
,其中n
是样本大小。但是,如果选择非常接近1,衰减因子通常无关紧要,因为具有这种衰减率的指数平均仍然提供非常接近均值和方差的近似值,尤其是在大型数据集上。
在TensorFlow中执行批量规格化的正确方法是什么?(即,我不想计算连续均值和方差)。我当前的实现基于tf。nn。batch\u normalization(批次规格化),其中x是具有形状的卷积层的输出。[批次大小、宽度、高度、通道数]。我想在通道方面执行批处理规范。 但这种实施的结果非常糟糕。与tensorflow比较。承包商。苗条的batch\u norm显示其票价较低(同样糟糕的培训表现
我使用Tensorflow 1.14.0和Keras 2.2.4。以下代码实现了一个简单的神经网络: 20个时代后的最终val\u损失为0.7751。当我取消注释添加批处理规范化层的唯一注释行时,val\u损失变为1.1230。 我的主要问题要复杂得多,但同样的事情也会发生。因为我的激活是线性的,所以我把批处理规范化放在激活之后还是之前并不重要。 问题:为什么批处理规范化帮不上忙?是否有什么可以更
我可以在输入层之后使用批处理规范化层而不规范化我的数据吗?我可以期望得到类似的效果/性能吗? 在keras函数中,它应该是这样的:
我正在查看TensorFlow中的官方批处理规范化层(BN),但它并没有真正解释如何将其用于卷积层。有人知道如何做到这一点吗?特别重要的是,它应用并学习每个特征映射(而不是每个激活)的相同参数。以其他顺序,它应用并学习每个过滤器的BN。 在一个特定的玩具示例中,我想用MNIST上的BN(基本上是2D数据)执行conv2d。因此,我们可以做到: 其中,z=BN(z)将BN应用于每个过滤器创建的每个特
我了解批次归一化有助于更快的训练,将激活转向单位高斯分布,从而解决梯度消失问题。批次规范行为在训练(使用每个批次的平均值/var)和测试时间(使用训练阶段的最终运行平均值/var)中的应用不同。 另一方面,实例归一化作为对比度归一化,如本文所述https://arxiv.org/abs/1607.08022。作者提到,输出样式化的图像不应依赖于输入内容图像的对比度,因此实例规范化有助于实现。 但是
问题内容: 在tensorflow 1.4中,我发现了两个执行批处理规范化的函数,它们看起来相同: (链接) (链接) 我应该使用哪个功能?哪一个更稳定? 问题答案: 只是添加到列表中,还有其他几种方法可以在tensorflow中进行批处理规范: 是低级操作。调用者负责自己处理和张量。 是另一个低级操作,类似于上一个操作。不同之处在于它针对4D输入张量进行了优化,这在卷积神经网络中很常见。接受任何