Tensorflow 禁用Keras批量标准化/标准化

Tensorflow 禁用Keras批量标准化/标准化,tensorflow,keras,normalization,batch-normalization,keras-2,Tensorflow,Keras,Normalization,Batch Normalization,Keras 2,我使用一个简单的Keras模型进行序列预测 我在整个系列中规范化地输入它 在训练期间,模型预测精度似乎是正确的。但是,当我绘制model.predict()函数的输出时,我可以看到输出以某种方式进行了缩放。这似乎是某种标准化/标准化类型的缩放 在培训时更改批次大小会影响结果。我尝试将批量大小设置为输入集的大小,以便在单个批次中完成整个系列的培训,这提高了结果,但仍然可以缩放 我的假设是,这与每个输入批次的规范化或输出规范化有关。我的模型中没有任何BatchNormalization层 有没有办法

我使用一个简单的Keras模型进行序列预测

我在整个系列中规范化地输入它

在训练期间,模型预测精度似乎是正确的。但是,当我绘制
model.predict()
函数的输出时,我可以看到输出以某种方式进行了缩放。这似乎是某种标准化/标准化类型的缩放

在培训时更改批次大小会影响结果。我尝试将批量大小设置为输入集的大小,以便在单个批次中完成整个系列的培训,这提高了结果,但仍然可以缩放

我的假设是,这与每个输入批次的规范化或输出规范化有关。我的模型中没有任何
BatchNormalization

有没有办法禁用Keras中输入/输出的默认规范化/标准化(这种默认行为是否存在)


我将Keras 2与Tensorflow后端和Tensorflow 1.1一起使用。

Keras不会隐式插入BN或任何其他规范化


你一定在观察别的东西。

我想我遇到了和你一样的问题

我检查了Keras包中的源代码以寻找线索。在../keras/engine/training.py中,名为_standarding_user_dara()的函数用于训练、评估和预测函数。该函数设计用于标准化输入数据(看起来是成批的),但在源代码中找不到反标准化函数

我猜Keras对输入数据进行了标准化,但对输出数据没有进行反标准化。我不确定这一点,因为我还没有检查所有的代码,这是不可能的…
顺便说一句,我阅读了其他一些用时间序列数据实现LSTM的代码,SKlearn包用于进行缩放和反向缩放。这可能是一个解决方案…我知道这篇文章很老,但是如果你对Keras中的标准化机制有任何想法,请告诉我,这将非常有帮助

你的最终激活层是什么?乙状结肠?谭?这些将始终输出标准化结果。(建议这样做。最好规范化培训的预期结果)最后一层的输出应该规范化。我正在使用
sigmoid
激活。这不是问题所在。我相信每个批次的输入都是标准化的(或者输出是以某种方式缩放的),似乎没有办法关闭它。为什么你认为结果是缩放的?你的“基本事实/预期结果”是什么?你的意思是培训的准确性可以,但验证数据的准确性不行吗?请提供模型,这不是Keras自动做到的。