我试图用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()
如果打印tf函数的所有输出,您将看到它不仅返回1s和0s,而是只返回整数。这是因为
elems
的值都是numpy.int32
类型。当执行平均步长时,sklearn
函数似乎将这些转换为浮点,而张量流方法则没有。在要查看固定变量,请考虑将
compute_mse
行更改为:编辑:在回答评论中的问题时,我会避免只为强制转换而创建变量。相反,我建议使用^{} 方法:
^{pr2}$相关问题 更多 >
编程相关推荐