TensorFlow:实现均方误差
TensorFlow: implementing Mean Squared 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 笔记本中实现的那个。
cost
和cost2
的区别恰好是2*num_instances
中的2
。基本上,
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
。请注意,无论您使用什么公式和网络拓扑结构,您仍然需要 select 合理的超参数,包括学习率。
您可以尝试检查两个损失函数的收敛性,我怀疑它们表现相同。这意味着两个公式都可以,第二个更容易实现。
我目前正在学习 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 笔记本中实现的那个。
cost
和cost2
的区别恰好是2*num_instances
中的2
。基本上,
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
。请注意,无论您使用什么公式和网络拓扑结构,您仍然需要 select 合理的超参数,包括学习率。
您可以尝试检查两个损失函数的收敛性,我怀疑它们表现相同。这意味着两个公式都可以,第二个更容易实现。