【问题标题】:Keras: Using Predict with a Model Trained with Normalized Data?Keras:在使用归一化数据训练的模型中使用 Predict?
【发布时间】:2018-04-07 03:38:02
【问题描述】:

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

【问题讨论】:

    标签: python keras


    【解决方案1】:

    我通常喜欢为此使用 sklearn,它确实保存了参数并允许您“逆变换”回原始值。对于预测,您可以通过 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)
    

    【讨论】:

    • 这两个答案都有帮助。 @chris 这看起来像是我要采用的解决方案。
    • 这似乎是在正确的方向,但你如何进行?假设我有一个要预测的端点,我该如何处理这些参数。如何使用与端点相同的参数对它们进行标准化?
    【解决方案2】:

    没有最好的方法来做到这一点(这取决于问题),但最常见的做法是对训练数据和测试数据进行归一化,使它们的均值为 0,标准差为 1。

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

    【讨论】:

    • 除了对输入进行规范化之外,我还建议使用批量规范化
    猜你喜欢
    • 2020-08-25
    • 2021-11-02
    • 2018-10-23
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多