我正在使用 TensorFlow 解决多目标回归问题。具体来说,在具有逐像素标记的卷积网络中,输入是图像,标签是“热图”,其中每个像素都有一个浮点值。更具体地说,每个像素的地面实况标记的下限为零,虽然在技术上没有上限,但通常不会大于 1e-2。
如果没有批量归一化,网络能够给出合理的热图预测。通过批量归一化,网络需要很长时间才能达到合理的损失值,而它所做的最好的事情就是使每个像素都成为平均值。这是使用tf.contrib.layers
conv2d
andbatch_norm
方法,并batch_norm
传递给conv2d
's normalization_fn
(或者在没有批量标准化的情况下不传递)。我曾在另一个(单值)回归网络上短暂尝试过批量标准化,但当时也遇到了麻烦(尽管我没有进行广泛的测试)。一般来说,在回归问题上使用批量标准化有问题吗?有没有通用的解决方案?
如果不是,可能是什么原因导致此类应用程序的批量标准化失败?我尝试了各种初始化、学习率等。我希望最后一层(当然不使用批量标准化)可以使用权重将倒数第二层的输出缩放到适当的回归值。做不到这一点,我从该层删除了批处理规范,但没有任何改进。我尝试了一个使用批量归一化的小分类问题,并没有发现任何问题,所以这似乎是合理的,这可能是由于回归问题的性质造成的,但我不知道这如何会导致如此巨大的差异。是否已知批量标准化在回归问题上存在问题?