【发布时间】:2016-06-02 15:19:01
【问题描述】:
这是一个更具概念性的问题,但我不得不承认我已经处理了一段时间了。
假设您想训练一个神经网络 (NN),例如使用 keras。建议您在训练之前执行数据的标准化或标准化,例如,使用标准化:
x_new = (x_old - mean)/standarddev
然后,你继续训练(model.fit in keras)并最小化损失函数,一切都很好。
编辑:在我的例子中,我有一组介于 200 和 400 之间的值。它是一个具有 1 个输入、1 个输出的 NN。我按照告知的方式对输入值和期望值进行了标准化,因此 NN 以 标准化 方式学习权重和偏差。
现在,假设我有一个值在 200 到 400 之间的全新数据集,并且我想使用具有先前训练的 NN 来预测输出。您可以在 keras 中使用 model.predict(x) 和 x 我收到的全新值集,标准化(或标准化),因为您的 NN 是以这种方式训练的。但是,在predict 之后,我得到的是一组标准化的值,但我想将它们映射到通常的 200 到 400 范围。而且我不知道该怎么做。
我知道您可以在不进行标准化或标准化的情况下进行训练,但我已经读过,如果您标准化(或标准化),值在单位(神经元)的输出范围内(例如,在 0 和1 为 sigmoid),训练得到改善。
谢谢。
【问题讨论】:
-
好的 - 让我们看看我是否理解:你得到了你的数据,你把它放到神经网络中,以标准化的形式 - 你想恢复它的原始值吗?或者你想去标准化你的输出?而且 - 顺便说一句。你的函数的输出是什么?一些代码可能有用。
-
是的,我有一个
x输入数组和一个y输出数组,其值在 200 到 400 之间。它们都经过标准化并执行了训练。之后,我有一个新数组x_2,其值在 200 到 400 之间,我想在 keras 中使用predict预测结果。问题是神经网络已经以标准化的方式进行了训练。如果我标准化这个新数组x_2我得到的,我们称之为y_2是标准化的,我想要的是denormalize,得到200 到400 之间的值。
标签: python neural-network keras