1

您好,我有一个产生这样的 logits / 输出的网络:

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. 当我EuclideanLoss在同一个网络中使用 Caffe 时,我的损失值从粗略开始1000下降到200. 我在 Tensorflow 中做错了什么或者为什么损失值那么小?我无法真正跟踪损失值,tensorboard因为它们太小了。谁能帮我?

4

1 回答 1

0

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

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

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

于 2017-06-23T12:21:05.573 回答