为什么这两个Tensorflow操作没有相同的结果?

时间:2017-03-29 23:13:58

标签: math tensorflow

我正在制作张量流图,最后一步是简单的均方误差计算。一些输入是填充,我使用张量loss_mask掩盖了它。这个张量大多是1,最后有几个0。

以下操作计算均方误差,其中屏蔽输出计为零误差。

error_squared = loss_mask * tf.pow(expected_outputs_reshaped - network_outputs, 2)
loss = tf.reduce_mean(error_squared)

问题在于,如果屏蔽了许多输出,那么平均损耗似乎远低于它应该的值,因为这些屏蔽输出计为零误差。所以,我尝试了以下代码来纠正这个问题:

error_squared = loss_mask * tf.pow(expected_outputs_reshaped - network_outputs, 2)
loss = tf.reduce_sum(error_squared) / tf.reduce_sum(loss_mask)

如果loss_mask全是1,那么这两件事应该会产生同样的结果。但是,他们不是。对于第一个,我得到正确的值,它们都在0和1之间。对于第二个,我得到数百个值。为什么这两个不一样?

我已经确认tf.reduce_sum(loss_mask)等于error_squared中的元素数量。

0 个答案:

没有答案