标准化错误?

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.])