标准化错误?
Normalization bug?
我正在尝试对进出 [-1, 1]
的数据进行规范化和反规范化。
为了规范化,我有:
def normalize(X, min_value, max_value):
return 2*((X - min_value)/(max_value - min_value)) - 1
其中 X 是一个 numpy 向量。
为了反规范化,我写出了公式并求逆得到:
def denormalize(X, min_value, max_value):
return ((max_value-min_value)*((X-1)/2)) + min_value
如果我这样做:
import numpy as np
n = normalize(np.array([1, 2, 3, 4]), 1, 4)
我正确地得到 [-1 -0.33333333 0.33333333 1.]
但是,如果我这样做 denormalize(n, 1, 4)
,我不会取回原始数组。
我做错了什么?
在denormalize
中应该是X+1
,而不是X-1
:
def denormalize(X, min_value, max_value):
return ((max_value-min_value)*((X+1)/2)) + min_value
denormalize(n, 1, 4)
# array([1., 2., 3., 4.])
我正在尝试对进出 [-1, 1]
的数据进行规范化和反规范化。
为了规范化,我有:
def normalize(X, min_value, max_value):
return 2*((X - min_value)/(max_value - min_value)) - 1
其中 X 是一个 numpy 向量。
为了反规范化,我写出了公式并求逆得到:
def denormalize(X, min_value, max_value):
return ((max_value-min_value)*((X-1)/2)) + min_value
如果我这样做:
import numpy as np
n = normalize(np.array([1, 2, 3, 4]), 1, 4)
我正确地得到 [-1 -0.33333333 0.33333333 1.]
但是,如果我这样做 denormalize(n, 1, 4)
,我不会取回原始数组。
我做错了什么?
在denormalize
中应该是X+1
,而不是X-1
:
def denormalize(X, min_value, max_value):
return ((max_value-min_value)*((X+1)/2)) + min_value
denormalize(n, 1, 4)
# array([1., 2., 3., 4.])