问题标签 [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 投票
0 回答
456 浏览

tensorflow - 在训练期间设置批量标准不可训练有意义吗?

在 tensorflow Object Detection API 中,faster_rcnn_meta_arch.py​​ 中,默认设置是在“TRAINING”期间使批范数参数不可训练。代码中的注释如下

据我了解,如果我们不设置可训练的批范数参数,则均值、标准差等的初始值将始终保持不变。这对于微调来说是可以的,但对于从头开始的训练会出现问题。这对我来说没有任何意义。谁能解释一下?谢谢你。

0 投票
0 回答
509 浏览

tensorflow - tf.layers.batch_normalization 在 sess.run() (1.5.0-dev20171031) 期间冻结

图形构建阶段顺利通过,但程序在第一个时期的第一个小批量的 sess.run() 期间冻结(不读取硬盘驱动器,不更改内存,不......)。如果我删除此层或将其替换为 tf.contrib.layers.layer_norm,则程序运行没有问题。

x我传递给 tf.layers.batch_normalization的张量 ( ) 具有形状[#batches, 200]。我使用大多数默认值,但关闭了中心和比例。

我使用的 tensorflow 版本是 tf-nightly-gpu(1.5.0-dev20171031 或 1.5.0-dev20171023)。有没有人遇到过类似的问题?

更新

当输入tf.layers.batch_normalizationis from时会发生这种情况tf.nn.bidirectional_dynamic_rnn,请查看简化代码以重现此问题:

0 投票
2 回答
864 浏览

machine-learning - 仅在 Keras 中对某些输入进行 BatchNormalization

我有 5 个输入的 LSTM 网络。第一个输入的典型值是从 1000 到 3000。其余输入的值是从 -1 到 1。

我想插入 BatchNormalization 作为第一层。但是输入 2-5 已经介于 -1 和 1 之间,并且第一个输入远大于第一个输入。那就是我想仅对第一个输入应用批量标准化,并将输入 2-5 保持原样。然后第一个(标准化)输入和 2-5 个输入应该传递给 LSTM 层。

如何在 Keras 中完成?

我认为我可以使用 BatchNormalization 裸层为第一个输入创建模型,然后将其与其余层连接起来。但我不确定也不知道具体是怎么做的。

0 投票
3 回答
6615 浏览

python - 在哪里对标准 CNN 应用批量归一化

我有以下架构:

我的问题是,我在哪里应用批量标准化?在 TensorFlow 中执行此操作的最佳功能是什么?

0 投票
1 回答
68 浏览

machine-learning - 我的代码在张量流中使用批量标准化层是否正确?

我有两个输入:qi_pos & qi_neg具有相同的形状。它们应该由两个 mlp 层处理,最后得到两个结果作为分数。这是我的代码:

我使用 BN 层对隐藏层中的节点进行归一化:

下面是损失定义。看起来没问题。

我不确定我是否以正确的方式使用了 BN 层。我的意思是 BN 参数来自两个独立部分的隐藏单元,它们基于qi_posqi_neg张量作为输入。无论如何,任何人都可以帮助检查它吗?

0 投票
2 回答
20545 浏览

python - 如何在 PyTorch 中进行完全连接的批处理规范?

torch.nn有类BatchNorm1d, BatchNorm2d, BatchNorm3d,但它没有完全连接的 BatchNorm 类?在 PyTorch 中执行正常 Batch Norm 的标准方法是什么?

0 投票
1 回答
964 浏览

tensorflow - 在测试阶段使用带有 dropout 的批量标准化给出 Nan

我正在尝试将批量标准化添加到我的 CNN 中,并且已经阅读了很多关于如何做到这一点的帖子,但是当我将训练设置为 False 时,我的实现仍然会产生一个 nans 数组。

即使在测试时间将训练设置为 True,结果也不是 Nan,但如果我在训练图像上进行测试,结果会比训练时间差。

我使用了0.9 的衰减并训练了15 000 次迭代

这是我的图形构建,按照tf.layers.batch_normalization 文档中的建议添加更新操作作为依赖项,然后使用 sess

这是我的batch_norm 函数调用

现在这里是我如何恢复模型进行测试

这里dense_prediction 给出了一个Nans 数组,因此predicted_image 全部为0 我的构造是否有错误?我该如何修复它/诊断它?

欢迎任何帮助,我已经阅读了很多使用“手工制作”批处理规范的教程,但我找不到关于如何使用官方批处理规范的良好指导教程,猜测是因为它太明显了,但它是不适合我 !

0 投票
1 回答
1336 浏览

machine-learning - Keras/TensorFlow BatchNormalization 正在规范化什么

我的问题是 BatchNormalization (BN) 正在规范化什么。

我在问,BN 是分别对每个像素的通道进行归一化,还是对所有像素一起归一化。它是在每个图像的基础上还是在整个批次的所有通道上进行的。

具体来说,BN 正在运行X。说,X.shape = [m,h,w,c]。因此axis=3,它在“c”维度上运行,即通道数(对于 rgb)或特征图的数量。

因此,可以说这X是一个 rgb,因此有 3 个通道。BN 是否执行以下操作:(这是 BN 的简化版本,用于讨论维度方面。我知道 gamma 和 beta 是学习的,但在这里不关心。)

对于每image=X一个m

  1. 对于每个像素 (h,w),取相关 r、g 和 b 值的平均值。
  2. 对于每个像素 (h,w),取相关 r、g 和 b 值的方差
  3. Do r = (r-mean)/var, g = (g-mean)/var, & b = (b-mean)/var, 其中 r, g, & b 分别是红色、绿色和蓝色通道X
  4. 然后对 中的下一张图像重复此过程m

在 keras 中,BatchNormalization 的文档说:

axis:整数,应该归一化的轴(通常是特征轴)。

例如,在带有 的Conv2D图层之后data_format="channels_first",设置axis=1BatchNormalization

但是它在每个维度上到底在做什么呢?

0 投票
0 回答
1331 浏览

python - Tensorflow - 无法使用 batchnorm 导入冻结图:未初始化的值 batch_normalization/moving_mean

我正在尝试在 pbtxt 文件中冻结包含 batchnorm 层(tf 1.1.0)的检查点。为此,请关注这些帖子和问题:

我使用这个功能:

这很顺利,并使用以下输出创建了 pbtxt 文件:

然后我尝试pbtxt使用这个函数加载模型:

使用以下代码段:

但是,这会导致以下错误:

跟随问题: TensorFlow:在变量初始化中“尝试使用未初始化的值” 我尝试初始化变量:

但是,这会将错误更改为:

这似乎表明没有需要初始化的变量。

我错过了什么?如何冻结并重新加载 batch_normalization 层的相关值?

0 投票
0 回答
413 浏览

machine-learning - tensorflow 批量归一化导致高测试损失

我一直在尝试在 tensorflow 中使用批量标准化,但没有成功。训练损失很好地收敛(比没有 BN 更好),但测试损失在整个训练过程中仍然很高。我正在使用 1 的批量大小,但更大的批量大小仍然会出现问题。我目前正在做的是:

is_training 是 tf.placeholder,我在训练期间分配给 True,在测试期间分配给 False,对于训练操作,我这样做:

我也尝试过“tf.contrib.layers.batch_norm”,以及我在网上找到的其他几种 BN 实现。但没有任何效果..我总是遇到同样的问题。

我知道在训练期间正在更新 beta 和 gamma 变量。但我也注意到 tf.get_collection(tf.GraphKeys.MOVING_AVERAGE_VARIABLES) 是一个空集合,这很奇怪。

有没有人见过并解决过这个问题?我想不出还有什么可以尝试的。

注意:我知道问题出在 BN 上,因为没有它,测试损失与训练的收敛性不如预期。