所以我不知道是一个bug还是我的代码有问题,但我正在努力理解发生了什么。 当我运行模型,并得到估计精度使用平均相对误差。我知道在我的验证数据中有0,所以我希望得到一些错误或一些inf。但事实并非如此。 这是我的代码:
X_test_norm = preprocessing.scale(X_test)
predictions = sess.run(pred, feed_dict={x: X_test_norm})
prediction = tf.convert_to_tensor(predictions)
expectation = tf.cast(Y_test, tf.float32)
MANUAL_MRE = tf.reduce_mean(tf.abs((Y_test - tf.transpose(predictions)) / Y_test))
MAE_op, MAE = tf.metrics.mean_absolute_error(expectation, prediction)
MRE_op, MRE = tf.metrics.mean_relative_error(expectation, prediction, expectation)
tf.local_variables_initializer().run()
print("MANUAL_MRE: %4f" % sess.run(MANUAL_MRE))
print("MRE: %4f" % sess.run(MRE))
print("MAE: %4f" % sess.run(MAE))
这是输出:
^{pr2}$当我在值大于0的数据上运行它时,我的MANUAL_MRE
和MRE值应该是一样的。我查了TF的文件,第一个案子没有意义。在
有人能告诉我哪里错了吗?或者我刚发现了一个bug/新功能。在
我想我知道发生了什么,因为MRE是每个平均相对误差的平均值,因此我认为{}只是在相加,就像这个值与预测完全不符一样。我相信这就是为什么当我用数据集计算MRE时,我知道它是负的,因为标签给了我这么高的MRE值。在
你也许可以从下面的代码中更好地理解我为什么这么认为:
相关问题 更多 >
编程相关推荐