Keras 在训练期间恢复非规范化数据

Keras 在训练期间恢复非规范化数据,keras,normalization,denormalization,Keras,Normalization,Denormalization,我用TensorFlow/Keras来训练CNN。我已经在0和1之间使用MinMaxScaler规范化了输入(X)和输出(Y)数据(我的问题中有2个输入和3个输出),如: from sklearn.preprocessing import MinMaxScaler # For normalizing data scaler = MinMaxScaler() # Define limits for normalize data X = scaler.fit_transform(X) # Norma

我用TensorFlow/Keras来训练CNN。我已经在0和1之间使用MinMaxScaler规范化了输入(X)和输出(Y)数据(我的问题中有2个输入和3个输出),如:

from sklearn.preprocessing import MinMaxScaler # For normalizing data
scaler = MinMaxScaler() # Define limits for normalize data
X = scaler.fit_transform(X) # Normalize input data
Y = scaler.fit_transform(Y) # Normalize output data
问题是,在训练期间,在每个阶段,我都会得到一个标准化的损失值。我是否可以得到原始损失值

我知道有以下反变换:

X = scaler.inverse_transform(X) # Inverse transformation of input data
Y = scaler.inverse_transform(Y) # Inverse transformation of output data

但我不确定如何在模型内部执行这种非规范化。

作为一般经验法则,您不应该试图更改损失函数以使其更易于解释。对于你的情况,我建议你做一个决定。在您创建的自定义度量函数中,您可以对y_true和y_pred进行逆变换,然后对它们进行任何您想要的计算(例如MAE)


如果你想做一些不能仅仅作为一个度量来处理的事情,你可以创建一个在_epoch _end上运行的(
)(或者任何你想做的事情)。

你为什么想要“原始”损失值?使用自定义损失函数和/或lambda层应该是可能的,但我觉得这不值得对代码产生影响。这是一个回归问题,使用非规范化数据将更容易解释我在每个历元结束时得到的结果。我明白了。。。因此,我可以创建一个自定义指标,并将其用作损失函数,而不是我的常规损失(我现在使用的是MSE)?@MuriloSouza不要试图更改损失函数。如果需要,可以创建自定义损失函数。然而,您正在寻找“可解释”的数字,因此您不应该触及您的损失,而应该使用自定义指标。我建议MAE,因为我会说它比MSE更容易解释,但这是你的选择,取决于你想看什么。