1

我正在使用一个简单的 Keras 模型进行系列预测。

我正在将整个系列中的输入标准化。

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

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

我的假设是这与每个输入批次的标准化或输出标准化有关。我的模型中没有任何BatchNormalization图层。

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

我正在使用带有 Tensorflow 后端和 Tensorflow 1.1 的 Keras 2。

4

2 回答 2

1

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

我检查了 Keras 包中的源代码以获取线索。在 ../keras/engine/training.py 中,名为 _standardize_user_dara() 的函数用于训练、评估和预测函数。此功能旨在标准化输入数据(似乎是按批次),但在源代码中(尚)找不到去标准化功能。

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

于 2018-03-21T04:54:31.490 回答
1

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

你一定在观察别的东西。

于 2017-05-21T21:11:44.943 回答