Math 为什么这两个Tensorflow操作没有相同的结果?
我正在做一个tensorflow图,最后一步是简单的均方误差计算。一些输入是填充,我使用张量Math 为什么这两个Tensorflow操作没有相同的结果?,math,tensorflow,Math,Tensorflow,我正在做一个tensorflow图,最后一步是简单的均方误差计算。一些输入是填充,我使用张量loss\u mask将其屏蔽掉。这个张量大部分是1,末尾有几个0 下面的操作计算均方误差,其中屏蔽输入计为零误差 error_squared = loss_mask * tf.pow(expected_outputs_reshaped - network_outputs, 2) loss = tf.reduce_mean(error_squared) 问题是,如果许多输出被屏蔽,那么平均损失似乎比它应
loss\u 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\u mask
都是1,那么这两件事的结果应该是一样的。然而,事实并非如此。对于第一个,我得到了正确的值,它们都在0和1之间。第二,我得到了数百个值。为什么这两个不一样
我已经验证了
tf.reduce\u sum(loss\u mask)
等于error\u squared
中的元素数,您可以尝试loss=tf.div(tf.reduce\u sum(error\u squared),tf.reduce\u sum(loss\u mask)
@TianjinGu做了完全相同的事情。你能试着找到预期输出和网络输出的特定值,这些值会导致不同的值吗?这样更容易重新设定。谢谢!