如何将神经网络的标准化输出转换回原始规模?
在我的神经网络中,输入的范围是从0到719,目标值的范围是从0到1340。为了让这些数据更好处理,我对输入和目标值进行了标准化处理,也就是把它们调整到均值为0,方差为1的状态。接着,我使用反向传播算法计算输出结果。现在,我的所有输出值都在-2到2之间。我该如何把这些输出值转换回原来的范围,也就是让它们落在(0,1340)之间呢?
补充说明:我有1个输入,5个隐藏神经元和1个输出。我使用了逻辑 sigmoid 激活函数。我进行标准化处理时,是先计算均值,然后用标准差进行除法。具体来说,我的输出值在-1.28到1.64之间。
2 个回答
0
逻辑 sigmoid 函数的输出值在 0 到 1 之间。所以如果你想把一个输出 y
调整到 0 到 1340 的范围内,你只需要把 y
乘以 1340。
一般来说,如果你想把逻辑 sigmoid 的输出调整到一个范围 (min, max)
,你可以使用下面的方式:
y_scaled = min + (max - min) * y
0
假设目标的平均值是 mu
,标准差是 sigma
,那么一个目标值 y
的 标准化 值应该是 (y-mu)/sigma
。也就是说,如果你得到一个输出值 y'
,你可以通过 y' -> mu + y' * sigma
的方式把它转换回原来的数值。