tensorflow的功能是否类似于pytorch" masked_fill _"

时间:2017-11-23 03:51:31

标签: tensorflow pytorch

我想通过掩码矩阵将INF值设置为矩阵,就像pytorch代码一样:

scores.data.masked_fill_(y_mask.data, -float('inf'))

我尝试使用tf.map_fn来实现它,但性能太慢了。那么tensorflow是否有任何有效的功能来实现它?

3 个答案:

答案 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)

参考:https://github.com/tensorflow/tensorflow/issues/41617