问题标签 [batch-normalization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
243 浏览

tensorflow - tf.contrib.layers.batch_norm 可以像论文中那样计算二维卷积批量归一化吗?

如批归一化的原始论文中所述,一维特征(例如,来自全连接层)和二维特征(例如,来自卷积层)的批归一化在很大程度上是不同的。

tensorflow 库提供了一种使用 1-D 功能进行批量标准化的简单方法,但我不确定它是否与 2-D 相同。该工具是tf.contrib.layers.batch_norm.

我不完全理解这种方法,但我们可以将此方法应用于二维批量标准化吗?

我看到有人在 2-D 特征图(具有多个通道)上使用它:示例 1(链接 1链接 2)。

源页面

0 投票
1 回答
6408 浏览

tensorflow - 如何在 Keras 的测试期间使用 Batch Normalization?

我目前正在尝试在 Keras 中使用 Batch Normalization 来实现模型。我已经成功地在培训阶段实施了它。

但是,对于测试,Batch Normalization 在进行网络前向传递之前计算整个总体的统计数据(均值和方差)(预先计算 BN 均值和方差,然后保持静态;这与训练相反阶段,其中均值和方差由批次确定)。

我关于 Keras 的问题是:

假设 (X, y) 是整个人口。假设 (X_batch, y_batch) 是一个批次(整个种群的一个子集)

如果我使用

如何将 X 和 y 的整个总体的均值和方差传递给批量归一化层?有什么办法可以让 keras 自动处理这个问题?

0 投票
0 回答
126 浏览

tensorflow - 在 Keras Batch Normlization 层进行测试期间,如何继续重新计算批处理统计信息?

我正在研究域适应模型。据我了解,Keras 在训练期间计算输入数据的运行平均值,而不是在测试期间(如最初的论文中所述,到目前为止没有什么特别的)。

现在,我如何使用 Keras,以便批量标准化统计信息在评估/测试期间也得到更新

进一步来说:

批量标准

gamma 和 beta 在训练期间学习,并在测试期间保持不变。

如何使用 Keras,以便在测试期间为每个批次重新计算我的(平均值)和 sigma(标准差)?

0 投票
1 回答
109 浏览

deep-learning - 在 Matconvnet 中,当 Batchnormalization=false 为 true 时,是否可以进行批量标准化

我正在使用 matconvnet 库。在 MNIST 示例中,默认参数 batchnormalization=true。但是 VL_NNBNORM() 函数什么都没有(只是注释行)。它是否有效?还是我必须更改 vl_nnbnnorm 功能?我的意思是,如果我将 batchnormalization=false 更改为 true,就足够了吗?谢谢..

0 投票
1 回答
103 浏览

python - TypeError:不兼容的可广播维度。预期(假,),得到(真,)

我正在使用 theano 和千层面。

我正在尝试使用 BatchNorm,但出现此错误。有人可以指导我,有什么问题吗?或者,如果我可以获得具有这种不匹配的变量的名称?

谢谢!

编辑1:

我正在尝试做这样的事情:

日志:

检查变量后,我知道代码中断了均值。我不知道为什么。

0 投票
0 回答
757 浏览

tensorflow - 使用多个 GPU 时,Tensorflow ExponentialMovingAverage 不适合批量归一化?

最近,我尝试使用多个 GPU 来加速训练。但是我对批量标准化有一些问题。具体来说,当我使用ExponentialMovingAverage来获得平均批次平均值和变化时,准确性很差。

我尝试了几种方法(函数)来实现批量标准化,如下所示。其余部分代码都是一样的,我只是尝试了不同的批量归一化函数。使用 2 个 GPU 时,方法 2-4 运行良好,但方法 1 在测试数据集上的准确度确实很差。当我切换到只使用 1 个 GPU 时,所有方法都运行良好。

数据集为 CIFAR10,batch size 为 128。当使用 2 个 GPU 时,每个 GPU 处理 64 个样本,然后对每个 GPU 的梯度进行平均,就像 tensorflow 教程CIFAR10 multi-gpu一样。

我的 tensorflow 版本是 1.1.0,python 版本是 2.7,操作系统是 ubuntu 16.04。CUDA 版本是 7.5.17。

我的问题是为什么使用 tf.train.ExponentialMovingAverage(方法 1)在使用多个 GPU 时效果如此糟糕?我真的很困惑。

方法一:

方法二:

方法三:

方法四:

方法 1 的结果:

方法 2 - 4 的结果(它们没有太大区别,所以只发布其中一个):

0 投票
1 回答
3194 浏览

tensorflow - 我们可以对具有不同数据分布的实例使用批量归一化和迁移学习吗?

教程具有用于训练和测试阶段的批量正常层的张量流实现。

当我们使用迁移学习时,可以使用批量归一化层吗?特别是当数据分布不同时。

因为在推理阶段,BN 层只使用固定的小批量均值和方差(这是在训练分布的帮助下计算的)。那么如果我们的模型有不同的数据分布,它会给出错误的结果吗?

0 投票
0 回答
194 浏览

caffe - 与在相同数据集上进行训练相比,测试时 Caffe 准确度下降

我在测试阶段遇到了 Caffe BatchNorm 层的问题。至少我认为它与 BatchNorm 层有关这个问题已经出现了几次,但我仍然没有找到适合我的解决方案。

在训练过程中一切看起来都很好,但在测试过程中准确率急剧下降(在同一数据集上)。我也在谷歌群里问过,但没有得到答复:https ://groups.google.com/forum/#!topic/caffe-users/ 0t4jehvN6oQ 在那里你也会找到我的network.prototxt

我在 U-Net 分割网络中使用 BatchNorm。在测试期间,我使用了 1 的批量大小,但这不应该影响“use_global_stats = true”时的结果,对吧?

我基本上尝试了如何在 caffe 中使用“BatchNorm”层中讨论的所有变体?但没有任何效果。

任何人都可以帮忙吗?

彼得

0 投票
0 回答
172 浏览

python - tf.layers 模块中的批量标准化

我正在使用 Tensorflow 1.0 tf.layers 模块。但是,我发现很难理解在 tf.layers.conv2d 函数中应用批量标准化的位置。

如果我理解得很好,这个函数有 L2/L1 的内核和偏置正则化器,以及一个活动正则化器。然而,我的一个假设是活动正则化器是在激活函数之后而不是之前应用的。因此,它可以用于 dropout。我不明白批量标准化在哪里应用。我的想法是:

  1. 它是默认的并且一直使用吗?
  2. 我应该将激活函数应用为无,然后将结果通过批处理规范层,然后再单独激活吗?

第二个选项将起作用。但是,我觉得可以提供更优雅的答案。

0 投票
2 回答
816 浏览

deep-learning - 批量标准化使训练更快?

我到处读到,除了提高准确性方面的表现外,“批量标准化使训练更快”。

我可能误解了一些东西(因为 BN 已不止一次被证明是有效的),但对我来说这似乎是不合逻辑的。

实际上,将 BN 添加到网络中会增加要学习的参数数量:BN 带来了要学习的“Scales”和“offset”参数。请参阅:https ://www.tensorflow.org/api_docs/python/tf/nn/batch_normalization

网络如何在“有更多工作要做”的同时更快地训练?

(我希望我的问题是合法的,或者至少不是太愚蠢)。

谢谢 :)