【问题标题】:Denormalize Tensorflow非规范化张量流
【发布时间】:2026-02-02 20:00:02
【问题描述】:

我想对神经网络的预测进行非规范化。 我首先标准化我的基本事实,并将其标准值和平均值保存在一个 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.convert_to_tensor 将 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.

如果我想转换张量值:

 def rmse_denorm(y_true, y_pred):
return backend.sqrt(backend.mean(backend.square((tf.dtypes.cast(y_pred)*std_y_train_n + mean_y_train_n) - (tf.dtypes.cast(y_true)*std_y_train_n+mean_y_train_n))))

我得到这个错误:

TypeError: cast() missing 1 required positional argument: 'dtype'

我该怎么做?

【问题讨论】:

    标签: python numpy tensorflow type-conversion denormalized


    【解决方案1】:

    尝试创建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: Failed to convert object of type &lt;class 'builtin_function_or_method'&gt; to Tensor. Contents: &lt;built-in method mean of numpy.ndarray object at 0x7f43594f6cb0&gt;. Consider casting elements to a supported type