Keras:在使用标准化数据训练的模型中使用预测?

时间:2018-04-06 16:11:57

标签: python keras

我正在Keras创建一个深度神经网络,使用表格数据执行NN回归。最佳做法是规范化输入和输出系列。我还想使用predict函数来为各种输入集提供模型输出的估计。如果训练数据被标准化,我假设我还需要使用相同的缩放参数来标准化predict数据集。最好的方法是什么?有没有办法自动规范化模型中的数据?

2 个答案:

答案 0 :(得分:2)

我通常喜欢使用sklearn,它确实保存了参数并允许你进行反变换#34;回到原始值。对于预测,您将通过inverse_transform函数发送它们以获得它们的实际预测值。

这是一个供您参考的工作示例。可以轻松调整定标器的参数。

from sklearn.preprocessing import MinMaxScaler, StandardScaler
import numpy as np

example = np.array([0., 1., 1., 0., 2., 3., 4., 4., 5.]).reshape(-1, 1)

# MinMax Scaling Example
scaler = MinMaxScaler(feature_range=(0.01, 0.99))
min_max_scaled = scaler.fit_transform(example)
min_max_orig = scaler.inverse_transform(min_max_scaled)

# Normalizing Example  (mean 0, std 1)
norm = StandardScaler()
normalized = norm.fit_transform(example)
normalized_orig = norm.inverse_transform(normalized)

答案 1 :(得分:1)

没有最好的方法(这取决于问题),但最常见的做法是将列车和测试数据标准化,使它们的平均值为0,标准差为1。

是的,使用Batch Normalization,您可以自动规范化模型中的数据,前提是您将合理大小的批次提供到网络中。这可能会产生类似于数据增强的效果,因为网络在训练期间将看到的信号很少会重复(因为一个示例的信号现在取决于其整个批次)。在Keras中,可以通过在输入层之后添加BatchNorm层来实现。