Tensorflow取一个被掩盖的张量的元素的平均值

问题描述 投票:0回答:1

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

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

例如:

t = [1,2,3]

t = pad(t,6)#padding,现在t = [1,2,3,0,0,0]

掩码= [正确,正确,正确,错误,错误,错误]

损失= [0.1、0.2、0.3、0.12、0.2、0.4]#注意填充元素会造成损失

损失=损失*蒙版#损失= [0.1,0.2,0.3,0,0,0]

现在我想要类似的东西:

平均(损失)= 0.6,即(0.1 + 0.2 + 0.3)/ 3

不是类似的东西:

平均值(损失)= 0.1,即(0.1 + 0.2 + 0.3 + 0 + 0 + 0)/ 6

python tensorflow mean mask loss-function
1个回答
0
投票

参考此tensorflow google group

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

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

© www.soinside.com 2019 - 2024. All rights reserved.