问题标签 [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.
tensorflow - tf.slim 中的 update_collections=None 是什么意思
中的说明layers.batch_norm
:
从http://arxiv.org/abs/1502.03167添加一个批量标准化层。
可用作 conv2d 和fully_connected 的规范化函数。
注意:训练时,moving_mean
和moving_variance
需要更新。默认情况下,更新操作放置在 中tf.GraphKeys.UPDATE_OPS
,因此需要将它们作为依赖项添加到train_op
.
可以设置updates_collections=None
强制更新到位,但这可能会降低速度,尤其是在分布式设置中。
它说
设置
updates_collections=None
为强制更新到位
. 到位是什么意思。
tensorflow - Tensorflow 分配 tf.contrib.layers.batch_norm 的moving_variance 和moving_average
我有一个 CNN 模型,其中包含一些批量标准化层。batchnorm 层由tf.contrib.layers.batch_norm
. 该模型在基本情况下运行良好。但一个问题是我不知道如何分配它的moving_variance
和moving_mean
。
详细地说,正如官方网站描述的那样,批量规范层有variance
mean
scale
offset
四个参数。最后两个是张量流变量,我可以很好地解决。对于最后两个,即使我可以得到它们tf.get_collection(tf.GraphKeys.UPDATE_OPS))
,它们是两个张量,我不知道如何分配它们。在大多数情况下,这两个参数是在训练阶段设置的。
我也试过tf.get_collection(tf.GraphKeys.VARIABLES)
,我可以得到两个名为tf.Variable 'BatchNorm/moving_mean
andtf.Variable BachNorm/moving_Variance
的 tensorflow 变量,尽管我可以用 改变这两个变量的值tf.assign
,但奇怪的是 batchNorm 的输出没有相应改变
感谢您的任何建议!
python - tf.layers.batch_normalization 如何在测试期间计算均值和方差?(测试数据有机器生成的样本)
我正在尝试在我当前应用 dropout 的 CNN 上实现批量标准化。一个问题是我不知道在测试期间如何计算均值和方差。
在文档中它说如果 training=False 设置然后标准化是通过移动统计来完成的。这是什么意思?
此外,由于我的测试数据有很多机器生成的样本,我不能使用总体均值和方差,而只能应用 tf.nn.batch_normalization()。这些样本用于防止手工标记,并在对我的模型进行评分时被排除在外
tensorflow - 如何使用分布式张量流通过批量标准化实现异步训练?
我想使用分布式 tensorflow 的异步训练来训练具有批量标准化的深度神经网络。但我不知道如何跟踪均值、方差、偏移量和比例。任何人都可以给出一些想法吗?谢谢!
tensorflow - 为什么 tensorflow 中的 batch_normalization 没有给出预期的结果?
我想在一个小例子中看到 batch_normalization 层的输出,但显然我做错了什么,所以我得到了与输入相同的输出。
上述代码的输入和输出几乎相同。谁能给我指出问题?
python - 我在 Tensorflow 中的批量标准化有什么问题?
我正在为 Kaggle 中的数字识别器实现一个 CNN。结构是:
conv5x5(filters=32)-conv5x5(filters=32)-maxpool2x2-conv3x3(filters=64)-conv3x3(filters=64)-maxpool2x2-FC(512)-drop(保持概率=0.25)-softmax(10)
这种结构在数字识别器中的准确率达到了 99.728%。
我想在转换层中添加批量规范。我这样添加它们:
BN_is_training
训练时 True 和推理时 False 的占位符在哪里。
update_ops 的设置是这样的:
然而,结果真的很奇怪。准确性永远不会增加,成本会不断增加。我在设置批量规范时有什么问题吗?
感谢:D
python - tensorflow多GPU代码如何实现批量归一化层
我创建了一个多 GPU 网络作为Cifar10_multigpu
在推理实现中,他们说:
我们使用 tf.get_variable() 而不是 tf.Variable() 实例化所有变量,以便在多个 GPU 训练运行中共享变量。如果我们只在单个 GPU 上运行这个模型,我们可以通过用 tf.Variable() 替换所有 tf.get_variable() 实例来简化这个函数。
所以我以我所有的 conv2d 层为例,但是 batchnorm 层呢?我如何自己实现它?
我可以tensorflow.contrib.slim.batch_norm
在这种情况下使用吗?该示例不包含任何关于批规范层的建议。
python - 批量归一化、批量特征提取和批量训练的方法
由于数据集太大,无法一次全部加载。我需要标准化、提取特征并批量训练它。我选择iris作为数据集并在 python 中选择scikit-learn来验证我的想法。第一步,我使用标准化批次standarScaler.particial_fit()
,
第二步,我使用提取特征IncrementalPCA.particial_fit()
第三步,我训练数据使用MLPClassifier.particial_fit()
下面是我调用上面定义的三个函数的主要函数:
但是,在这种方法中,每一步,包括归一化和特征提取,我都必须对所有批次的数据进行两次检查。有没有其他方法可以简化流程?(例如,一个批次可以直接从第 1 步到第 3 步)
python - 多GPU张量流代码中的批量标准化参数更新?
我写了一个多 gpu Cnn 代码
在此链接 中,他们在第 249 行发表了评论
# 仅保留来自最终塔的批量标准化更新操作。理想情况下,我们应该从所有塔中获取更新 # 但这些统计数据积累得非常快,因此我们可以忽略来自其他塔的 # 其他统计信息而不会造成重大损害。
但是这个更新批量规范的代码(在第 253 行):
已为所有塔(GPU)完成,那么此更新的正确位置是什么?