禁用 Keras 批处理 normalization/standardization
Disable Keras batch normalization/standardization
我正在使用简单的 Keras 模型进行序列预测。
我正在给它输入在整个系列中标准化的输入。
模型预测准确度在训练期间似乎是正确的。但是,当我绘制 model.predict()
函数的输出时,我可以看到输出已经以某种方式缩放。这似乎是某种 normalization/standardization 类型的缩放。
改变训练的批量大小会影响结果。我尝试将批次大小设置为输入集的大小,以便在单个批次中完成整个系列的训练,从而提高了结果,但它仍然是按比例缩放的。
我的假设是这与每个输入批次的规范化或输出规范化有关。我的模型中没有任何 BatchNormalization
层。
有没有办法在 Keras 中禁用 input/output 的默认 normalization/standardization(这种默认行为是否存在)?
我正在使用带有 Tensorflow 后端和 Tensorflow 1.1 的 Keras 2。
Keras 不会隐式插入 BN 或任何其他规范化。
你一定是在观察别的东西。
我想我 运行 遇到了和你一样的问题。
我检查了 Keras 包中的源代码以寻找线索。在 ../keras/engine/training.py 中,一个名为 _standardize_user_dara() 的函数用于训练、评估和预测函数。此函数旨在标准化输入数据(似乎是按批次),但是在源代码中(还)找不到 de-standardize 函数。
我猜测 Keras 对输入数据进行了标准化,但未对输出数据应用 de-standardization。这个我不确定,因为我没有检查所有的代码,这是不可能的……
顺便说一句,我读了一些其他人用时间序列数据实现 LSTM 的代码,SKlearn 包用于缩放和 inverse-scaling。这可能是一个解决方案……我知道这个 post 很老了,但是如果您对 Keras 中的这种标准化机制有任何想法,请告诉我,这将非常有帮助
我正在使用简单的 Keras 模型进行序列预测。
我正在给它输入在整个系列中标准化的输入。
模型预测准确度在训练期间似乎是正确的。但是,当我绘制 model.predict()
函数的输出时,我可以看到输出已经以某种方式缩放。这似乎是某种 normalization/standardization 类型的缩放。
改变训练的批量大小会影响结果。我尝试将批次大小设置为输入集的大小,以便在单个批次中完成整个系列的训练,从而提高了结果,但它仍然是按比例缩放的。
我的假设是这与每个输入批次的规范化或输出规范化有关。我的模型中没有任何 BatchNormalization
层。
有没有办法在 Keras 中禁用 input/output 的默认 normalization/standardization(这种默认行为是否存在)?
我正在使用带有 Tensorflow 后端和 Tensorflow 1.1 的 Keras 2。
Keras 不会隐式插入 BN 或任何其他规范化。
你一定是在观察别的东西。
我想我 运行 遇到了和你一样的问题。
我检查了 Keras 包中的源代码以寻找线索。在 ../keras/engine/training.py 中,一个名为 _standardize_user_dara() 的函数用于训练、评估和预测函数。此函数旨在标准化输入数据(似乎是按批次),但是在源代码中(还)找不到 de-standardize 函数。
我猜测 Keras 对输入数据进行了标准化,但未对输出数据应用 de-standardization。这个我不确定,因为我没有检查所有的代码,这是不可能的…… 顺便说一句,我读了一些其他人用时间序列数据实现 LSTM 的代码,SKlearn 包用于缩放和 inverse-scaling。这可能是一个解决方案……我知道这个 post 很老了,但是如果您对 Keras 中的这种标准化机制有任何想法,请告诉我,这将非常有帮助