当前位置: 首页 > 知识库问答 >
问题:

TensorFlow-批量归一化在回归中失败?

郎仰岳
2023-03-14

我用TensorFlow来解决一个多目标回归问题。具体地说,在具有逐像素标记的卷积网络中,输入为图像,标签为“热图”,其中每个像素具有浮点值。更具体地说,每个像素的地面真值标记的下界为零,虽然技术上没有上界,但通常不会大于1e-2。

在不进行批量归一化的情况下,该网络能够给出合理的热图预测。通过批量归一化,网络需要很长时间才能获得合理的损耗值,而它所做的最好的工作就是使每个像素都成为平均值。这是使用tf。承包商。层conv2dbatch\u norm方法,将batch\u norm传递给conv2dnormalization\u fn。我曾在另一个(单值)回归网络上短暂尝试过批量标准化,但当时也遇到了问题(尽管我没有进行过广泛的测试)。一般来说,在回归问题上使用批量归一化是否存在问题?有共同的解决方案吗?

如果不是,是什么原因导致此类应用程序的批处理规范化失败?我尝试了各种初始化、学习速率等。我希望最后一层(当然不使用批量标准化)可以使用权重将倒数第二层的输出缩放到适当的回归值。如果做不到这一点,我将batch norm从该层中删除,但没有任何改进。我尝试了一个使用批处理规范化的小分类问题,但没有发现任何问题,因此这似乎是合理的,可能是由于回归问题的性质造成的,但我不知道这是如何导致如此巨大的差异的。是否已知批处理规范化在回归问题上有问题?

共有1个答案

凤修为
2023-03-14

我相信你的问题在标签上。Batch norm将缩放0到1之间的所有输入值。如果标签没有缩放到类似的范围,任务将更加困难。这是因为它需要神经网络学习不同尺度的值。

通过从倒数第二层删除批处理规范,任务可能会略有改进,但您仍然需要NN层学习缩小其输入值的比例,同时随后将其规格化回0-1的范围(与您的目标相反)。

要解决此问题,请对标签应用0-1定标器,使上界不再是1e-2。在推理过程中,使用相同的函数将预测转换回,以获得实际预测。

 类似资料:
  • 我很难理解Tensorflow中批量规范化的实现。为了举例说明,我创建了一个简单的网络,其中包含一个输入节点、一个隐藏节点和一个输出节点,并使用1个批运行,批大小为2。我的输入x由一个标量组成,该标量有2个值(即批大小为2),一个值设置为0,另一个值设置为1。 我运行一个纪元,并写出隐藏层的输出(批处理规范化之前和之后)以及批处理范数移动均值、方差、γ和beta。 这是我的代码: 以下是我运行代码

  • 本节我们介绍批量归一化(batch normalization)层,它能让较深的神经网络的训练变得更加容易 [1]。在 “实战Kaggle比赛:预测房价” 一节里,我们对输入数据做了标准化处理:处理后的任意一个特征在数据集中所有样本上的均值为0、标准差为1。标准化处理输入数据使各个特征的分布相近:这往往更容易训练出有效的模型。 通常来说,数据标准化预处理对于浅层模型就足够有效了。随着模型训练的进行

  • 我正在实现一个依赖于3D卷积的模型(对于类似于动作识别的任务),我想使用批量规范化(参见 下面的代码引用了TensorFlow r0.12,它显式地引用了变量——我的意思是我没有使用tf。承包商。学习tf以外的内容。承包商。图层。batch\u norm()函数。我这样做是为了更好地理解事情是如何运作的,并且有更多的实现自由度(例如,变量摘要)。 我将通过首先编写完全连接层的示例,然后编写2D卷积

  • 作为生成输出阵列模型/re_lu_1/Relu的Conv运算符的输入的层(...)缺乏量化所必需的最小/最大数据。如果准确性很重要,可以选择非量化输出格式,或者从浮点检查点使用模型运行量化训练,将输入图更改为包含最小/最大信息。如果您不关心准确性,您可以通过-default_ranges_min=和-default_ranges_max=进行简单的实验。

  • 在本章中,将重点介绍使用TensorFlow进行线性回归实现的基本示例。逻辑回归或线性回归是用于对离散类别进行分类的监督机器学习方法。在本章中的目标是构建一个模型,用户可以通过该模型预测预测变量与一个或多个自变量之间的关系。 这两个变量之间的关系是线性的。如果是因变量的变化而变化,那么可将认为是自变量,那么两个变量的线性回归关系将如下式所示: 接下来将设计一种线性回归算法。需要了解以下两个重要概念