Tensorflow代表掩盖张量的元素

时间:2019-11-23 10:14:29

标签: python tensorflow mean mask loss-function

要处理可变长度的输入序列,请将所有输入序列填充为相同的长度。这会影响计算损失值。因此,将遮罩张量与损失张量相乘,以使填充元素产生的损失为0。但是,使用tf.math.reduce_mean或tf.keras.metrics.Mean来计算损失的平均值时,这些填充元素会影响卑鄙的。

所以我的问题是,如何对张量流中掩盖的损失求平均值?

例如:

t = [1, 2, 3]
t = pad(t, 6) # padding, now t = [1, 2, 3, 0, 0, 0]
mask = [True, True, True, False, False, False]
loss = [0.1, 0.2, 0.3, 0.12, 0.2, 0.4] # notice padded elements contribute to loss
loss = loss * mask # loss = [0.1, 0.2, 0.3, 0, 0, 0]

现在我想要类似的东西

Mean(loss) = 0.6, which is (0.1 + 0.2 + 0.3) / 3

不是这样的:

Mean(loss) = 0.1, which is (0.1 + 0.2 + 0.3 + 0 + 0 + 0)/6

1 个答案:

答案 0 :(得分:0)

请参阅此tensorflow google group

将张量的减少总和除以掩码的减少总和。

平均值= tf.math.reduce_sum(t)/ tf.math.reduce_sum(掩码)