问题标签 [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.
machine-learning - 实例规范化与批量规范化
我知道批量归一化通过将激活转向单位高斯分布从而解决梯度消失问题,有助于加快训练速度。批规范行为在训练(使用每批的均值/方差)和测试时间(使用训练阶段的最终运行均值/方差)时应用不同。
另一方面,实例归一化充当本文https://arxiv.org/abs/1607.08022中提到的对比度归一化。作者提到输出的风格化图像不应该依赖于输入内容图像的对比度,因此实例归一化会有所帮助。
但是我们不应该也将实例归一化用于图像分类,其中类标签不应该依赖于输入图像的对比度。我还没有看到任何使用实例标准化代替批量标准化进行分类的论文。这是什么原因?此外,可以而且应该将批处理和实例规范化一起使用。我渴望对何时使用哪种规范化有一个直观的和理论上的理解。
machine-learning - 测试期间的批量标准化
对于测试期间的批量标准化,如何计算每个激活输入(在每一层和输入维度中)的均值和方差?是记录训练的均值和方差,计算整个训练集的均值和方差,还是计算整个测试集的均值和方差?
很多人说要预先计算均值和方差,但是如果使用计算整个测试集的均值和方差的方法,是不是需要在进行前向传播时计算整个测试集的均值和方差? (不是“前”)?
非常感谢您的帮助!
neural-network - 在 caffe 中使用批量标准化时梯度消失
全部
我在 Caffe 中使用批量标准化时遇到了问题。这是我在 train_val.prototxt 中使用的代码。
然而,训练并没有收敛。通过去除 BN 层(batchnorm + scale),训练可以收敛。所以我开始比较有或没有BN层的日志文件。以下是 debug_info = true 的日志文件:
使用 BN:
没有 BN:
奇怪的是,在前进中,以 batchnorm 开头的每一层都给出 0 !!!另外值得一提的是,Relu(in-place layer)只有 4 行,但是 batchnorm 和 scale(应该也是 in-place 层)在日志文件中有 6 行和 3 行。你知道有什么问题吗。
tensorflow - 当图像属于一个类时,批量标准化是一种好习惯吗?
假设我正在训练一个模型来仅从 MNIST 数据集中对 8 号图像进行分类。在这种情况下使用批量标准化是一个好习惯吗?
当图像是异构的,即属于不同的类别,例如鸟、狗、猫等时,也许它会很好用。换句话说,如果样本最初属于同一类,那么网络将适应每一层的隐藏分布,因为它们不会有太大变化(可能在开始时网络正在训练),但后来,权重会学习。但是给一个不同类别的网络图像,那么隐藏分布会从一个图像到另一个图像(即从一个类到另一个)有很大差异是有道理的。
我之所以问这个问题,是因为我试图训练一个一次启用批量标准化并在另一次禁用的模型。而且由于该模型已经在属于同一类的图像上进行了训练,因此该模型似乎需要更多的时间来进行批量归一化的训练。
PS 我正在使用 tensorflow 构建我的模型,这是我正在使用的Batch Norm层(来自: https ://r2rt.com/implementing-batch-normalization-in-tensorflow.html ):
也许这一层有错误。没有把握。
任何帮助深表感谢!!
keras - 使用 keras 进行批量标准化的 dnn 层的理论问题
我在理解使用批量标准化的 DNN 模型时遇到了一些麻烦,特别是使用 keras。有人可以解释一下我构建的这个模型中每一层的结构和内容吗?
我认为这是我模型的所有层:
我将感谢您的帮助,在此先感谢。
python - 恢复训练好的 tensorflow 模型,编辑与节点关联的值,并保存
我已经用 tensorflow 训练了一个模型,并在训练期间使用了批量标准化。批量标准化需要用户传递一个名为 的布尔值is_training
来设置模型是处于训练阶段还是测试阶段。
当模型被训练时,is_training
被设置为一个常数,如下所示
我保存了训练好的模型,文件包括检查点、.meta 文件、.index 文件和 .data。我想恢复模型并使用它运行推理。无法重新训练模型。所以,我想恢复现有模型,将值设置is_training
为False
,然后将模型保存回来。如何编辑与该节点关联的布尔值并再次保存模型?
python - Tensorflow ValueError:尝试加载保存为 .pb 的模型时,无法将 float32 类型的张量转换为 float32_ref 类型的输入
我有一个经过训练的 tensorflow 模型以检查点、.data、.meta 和 .index 文件的形式保存。该模型使用批量标准化。我尝试使用freeze_graph将其转换为 .pb 文件,该文件可以导入为.pb 文件from tensorflow.python.tools import freeze_graph
。它的输入也是一个.pb
文件,但它只有图形结构。我使用以下代码恢复模型
然后创建一个.pb
包含图形结构的文件
在此之后,我freeze_graph
用来生成一个.pb
包含图形结构和权重的文件。的输入freeze_graph
是
执行为
这会创建frozen_model.pb
,当我尝试如下加载它时
它引发以下错误
我怎样才能解决这个问题?
python - Tensorflow - 取决于批量大小的预测输出
我在 Tensorflow 中实现了一个生成对抗网络。在测试期间,如果我使用与训练期间相同的 batch_size 生成图像(64),则生成的图像非常好;如果我一次生成一张图像,结果会很糟糕。
可能的原因可能是2:
- 批量标准化?
- 错误使用 tf.shape 来获取动态批量大小
这是我的代码:
tensorflow - Tensorflow批处理规范导致训练损失和验证损失之间的不平衡?
下面的代码片段是我的代码。我使用 Queues 加载训练数据,并使用 Feed 加载验证图像。随着训练过程,训练损失和训练准确度恰到好处。然而,就验证阶段而言,验证损失和准确性很奇怪。验证损失太高,无论我运行多少步,验证准确率都太低,就像随机猜测一样。但是,当我在函数 load_validate_img_data 中将 'is_training' 参数设置为 True 而不是 False 时,验证损失和准确度正好合适。使用batch_norm有什么问题吗?
machine-learning - 为什么仅在 CNN 中对通道进行批量归一化
我想知道,在卷积神经网络中,是否应该分别对每个像素应用批量归一化,还是应该对每个通道取像素的平均值?
我看到在 Tensorflow 的tf.layers.batch_normalization的描述中,建议对通道执行 bn,但如果我没记错的话,我使用了另一种方法,效果很好。