张量均方误差计算与sklearn不同

2024-06-16 14:15:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用tensorflow计算mse,并将结果与sklearn.metrics.mean_squared_error方法进行比较。在

def mse(y,y_hat):
    return tf.reduce_mean(tf.squared_difference(y, y_hat)).eval()

compute_mse = lambda vector1, vector2: mse(vector1,vector2)

我的测试循环

^{pr2}$

但我的tf函数总是返回0或1。 你能告诉我我哪里错了吗。在

升级版

感谢@apnorton指出了类型的问题。在

def mse(y,y_hat):
    y_ = tf.Variable(y, tf.float64)
    y_hat_ = tf.Variable(y_hat, tf.float64)
    return tf.reduce_mean(tf.squared_difference(y_, y_hat_).eval()

Tags: reducereturntfhatdefevalmeanvariable
1条回答
网友
1楼 · 发布于 2024-06-16 14:15:03

如果打印tf函数的所有输出,您将看到它不仅返回1s和0s,而是只返回整数。这是因为elems的值都是numpy.int32类型。当执行平均步长时,sklearn函数似乎将这些转换为浮点,而张量流方法则没有。在

要查看固定变量,请考虑将compute_mse行更改为:

my_mse = compute_mse(el.astype(float),el_2.astype(float))

编辑:在回答评论中的问题时,我会避免只为强制转换而创建变量。相反,我建议使用^{}方法:

^{pr2}$

相关问题 更多 >