我想根据神经网络对我的预测进行归一化。 首先,我将基本事实归一化,并将其std和均值保存在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'
我该怎么做?