我想通过掩码矩阵将INF值设置为矩阵,就像pytorch代码一样:
scores.data.masked_fill_(y_mask.data, -float('inf'))
我尝试使用tf.map_fn
来实现它,但性能太慢了。那么tensorflow是否有任何有效的功能来实现它?
答案 0 :(得分:2)
我使用了数学计算方法。它有效且速度更快。
def mask_fill_inf(matrix, mask):
negmask = 1 - mask
num = 3.4 * math.pow(10, 38)
return (matrix * mask) + (-((negmask * num + num) - num))
有人有更好的方法吗?
答案 1 :(得分:0)
我受到以上答案的启发。
masked_fill
==>
def mask_fill_inf(matrix, mask):
num = 3.4 * math.pow(10, 38)
return (matrix + (-(((mask * num) + num) - num)))
答案 2 :(得分:0)
也许你可以使用:
tf.where(mask, default_value, data)