【发布时间】: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