【问题标题】:When using RMSE loss in TensorFlow I receive very small loss values smalerl than 1 [closed]在 TensorFlow 中使用 RMSE 损失时,我收到的损失值非常小,小于 1 [关闭]
【发布时间】:2017-06-23 08:57:02
【问题描述】:

您好,我有一个产生如下日志/输出的网络:

logits = tf.placeholder(tf.float32, [None, 128, 64, 64]) // outputs
y = tf.placeholder(tf.float32, [None, 128, 64, 64]) // ground_truth, targets

--> y ground truth 值从[0, 255] to [0, 1] 缩小,以提高性能,因为我读过最好使用范围[0, 1]

现在我想像这样计算 RMSE / EuclideanLoss:

loss = tf.reduce_mean(tf.square(logits - y))

loss = tf.sqrt(tf.reduce_mean(tf.square(tf.subtract(y, logits))))

不确定哪个更好。

这样做时,我的损失值大约从 1. 开始,然后迅速下降到 2.5e-4。当我在 Caffe 中为同一网络使用 EuclideanLoss 时,我的损失值大致从 1000 开始下降到 200。我在 Tensorflow 中做错了什么或者为什么损失值那么小?我无法真正跟踪tensorboard 中的损失值,因为它们太小了。谁能帮帮我?

【问题讨论】:

  • 看起来您正在计算两个占位符之间的输出,并且在将logits 用于损失之前没有对它进行任何处理,这是真的吗?你能多展示一下代码吗?
  • 哦不!占位符仅用于说明!我的最后一层大致是这样的:logits = tf.nn.conv2d(inputs, weights, [1,strides,strides,1], padding='VALID', data_format='NHWC')@FlorentinHennecker

标签: python tensorflow caffe euclidean-distance mean-square-error


【解决方案1】:

您建议的第一个损失是更好的(第二个引入了不必要的sqrt)。

等于或小于 1 的值似乎是唯一可能的值,因为您提供的值的范围在 0 和 1 之间 - 所以最大可能的错误是 1。

如果您无法在 tensorboard 中可视化损失,请尝试使用对数刻度(图表下方的两个按钮之一)显示图表

【讨论】:

  • 问题是我的错误以大于 1 的值开始,这让我感到困惑......此外,我的值变得如此之小以至于值为零,因为这些值类似于 value.e-10。
  • 你可能想展示你的代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
  • 2017-10-06
相关资源
最近更新 更多