【问题标题】:TensorFlow: implementing Mean Squared ErrorTensorFlow:实现均方误差
【发布时间】:2018-01-28 08:34:45
【问题描述】:

我目前正在学习 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/2 因子有助于抵消从平方项的导数获得的 2。正如下面的答案所说,它对学习的影响不大。

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


【解决方案1】:

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。请注意,无论您使用什么公式和网络拓扑,您仍然需要选择合理的超参数,包括学习率。

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

【讨论】:

  • OP 具有 tf.reduce_sumtf.reduce_mean 的损失函数
猜你喜欢
  • 2022-01-14
  • 1970-01-01
  • 2017-05-11
  • 2020-03-29
  • 1970-01-01
  • 1970-01-01
  • 2017-11-23
  • 1970-01-01
  • 2015-07-11
相关资源
最近更新 更多