TensorFlow:实现Mean Squared Error

时间:2018-01-28 08:34:46

标签: python-3.x tensorflow machine-learning linear-regression mean-square-error

我目前正在学习TensorFlow并遇到this notebook

我对如何实现均方误差成本函数有疑问:

import tensorflow as tf 
import numpy as np 

predicted = np.array([1,2,3])
Y = np.array([4,5,6])
num_instances = predicted.shape[0]

cost = tf.reduce_sum(tf.pow(predicted-Y, 2))/(2*num_instances)
cost2 = tf.reduce_mean(tf.square(predicted - Y))

with tf.Session() as sess:
  print(sess.run(cost))
  print(sess.run(cost2))

我不明白为什么它必须将第一成本函数的分母乘以2.我从MSE的不同实现得到不同的答案,成本收益率4.5而成本2收益率9.遵循公式均方误差,我应该得到值9.但第一个成本函数是我试图学习的python笔记本中实现的那个。

1 个答案:

答案 0 :(得分:2)

costcost2之间的差异恰好是2中的2*num_instances。基本上,

cost = tf.reduce_sum(tf.pow(predicted-Y, 2))/(2*num_instances)
cost2 = tf.reduce_sum(tf.pow(predicted-Y, 2))/(num_instances)

标量2不会对学习产生太大影响,相当于将学习率乘以2。请注意,无论您使用何种公式和网络拓扑,您仍需要选择合理的超参数,包括学习率。

您可以尝试检查两种损失函数的收敛性,我怀疑它们的表现相同。这意味着两个公式都很好,第二个公式更容易实现。