Python 张量流的非规范化

Python 张量流的非规范化,python,numpy,tensorflow,type-conversion,denormalized,Python,Numpy,Tensorflow,Type Conversion,Denormalized,我想用神经网络对我的预测进行去规范化。 我首先规范化我的基本事实,并将其标准值和平均值保存在numpy数组中: def norm(x): return ((x - x.mean()) / x.std()) norm_y_train_n = norm(y_train_n) mean_y_train_n = y_train_n.mean std_y_train_n = y_train_n.std 然后我训练我的人际网络: history = model.fit(x_train_n, norm

我想用神经网络对我的预测进行去规范化。 我首先规范化我的基本事实,并将其标准值和平均值保存在numpy数组中:

def norm(x):
  return ((x - x.mean()) / x.std())

norm_y_train_n = norm(y_train_n)
mean_y_train_n = y_train_n.mean
std_y_train_n = y_train_n.std
然后我训练我的人际网络:

history = model.fit(x_train_n, norm_y_train_n, batch_size=10, epochs=200, validation_split=0.1, shuffle=True, callbacks=[es])
我想将我的数据反规范化为原始分布,这样我就可以在如下有意义的范围内解释rmse:

def rmse_denorm(y_true, y_pred):
    return backend.sqrt(backend.mean(backend.square((y_pred*std_y_train_n + mean_y_train_n) - (y_true*std_y_train_n+mean_y_train_n))))
但是我不能,如果我试着用tf将numpy值转换成张量值。像这样将_转换成_张量:

def rmse_denorm(y_true, y_pred):
return backend.sqrt(backend.mean(backend.square((y_pred*tf.convert_to_tensor(std_y_train_n) + tf.convert_to_tensor(mean_y_train_n)) - (y_true*tf.convert_to_tensor(std_y_train_n)+tf.convert_to_tensor(mean_y_train_n)))))
我将得到以下错误:

Failed to convert object of type <class 'builtin_function_or_method'> to Tensor. Contents: <built-in method std of numpy.ndarray object at 0x7ff00811aee0>. Consider casting elements to a supported type.
TypeError: cast() missing 1 required positional argument: 'dtype'
我得到这个错误:

Failed to convert object of type <class 'builtin_function_or_method'> to Tensor. Contents: <built-in method std of numpy.ndarray object at 0x7ff00811aee0>. Consider casting elements to a supported type.
TypeError: cast() missing 1 required positional argument: 'dtype'

我该怎么做

尝试创建2 tf.constant:

std_const = tf.constant(std_y_train_n)
mean_const = tf.constant(mean_y_train_n)
def rmse_denorm(y_true, y_pred):
    return backend.sqrt(backend.mean(backend.square((y_pred*std_const + mean_const) - (y_true*std_const+mean_const))))

尝试创建2 tf.constant:

std_const = tf.constant(std_y_train_n)
mean_const = tf.constant(mean_y_train_n)
def rmse_denorm(y_true, y_pred):
    return backend.sqrt(backend.mean(backend.square((y_pred*std_const + mean_const) - (y_true*std_const+mean_const))))

我收到以下错误:
TypeError:无法将类型的对象转换为张量。目录:。考虑将元素转换为支持类型< /代码>。我得到这个错误:<代码> Type错误:将类型对象转换为Tensor失败。目录:。将铸造元素考虑为支持类型< /代码>