非标准化规范化输出

时间:2017-01-15 02:46:35

标签: neural-network normalization keras

我目前正在处理NN问题,我将输入映射到输出。

我已将输入和输出标准化,使它们处于相同的范围内=> -1到1,这样我就可以使用tanh作为激活函数。

我似乎从训练中得到了相当不错的结果,val_loss = 0.0156。

但是要实际使用数据集,我必须对输出进行非规范化,这使得它与实际输出非常不同。

我对NN很陌生,但通常是非正常化吗?如果不?这些问题如何解决?

我目前正在使用min-max正规化进行规范化,并且由于我存储了max和min值,因此我使用它们来返回值。

有关数据的更多信息:

数据集由stft个音频文件组成,输出是一个特征向量(mfcc)。 由于stft给了我复杂的价值,但由于keras无法处理复数,我分裂了实部和虚部,并将它们连成一致。

1 个答案:

答案 0 :(得分:1)

您可以使用lambda layer执行非规范化步骤作为网络本身的一部分。

假设您可以定义规范化函数:

f = K.function(/* some function */)

你现在的模特是:

model = Sequential()
model.add(Dense(1000, input_dim=1000))
model.add(Dense(1000))

您可以通过执行以下操作来规范化输出:

model = Sequential()
model.add(Dense(1000, input_dim=1000))
model.add(Dense(1000))
model.add(Lambda(lambda x: f(x))
相关问题