我想用 -np.inf
屏蔽分数矩阵中的所有零,但我只能屏蔽部分零,看起来像
你会在右上角看到仍然有没有被 -np.inf
掩盖的零
这是我的代码:
q = torch.Tensor([np.random.random(10),np.random.random(10),np.random.random(10), np.random.random(10), np.zeros((10,1)), np.zeros((10,1))])
k = torch.Tensor([np.random.random(10),np.random.random(10),np.random.random(10), np.random.random(10), np.zeros((10,1)), np.zeros((10,1))])
scores = torch.matmul(q, k.transpose(0,1)) / math.sqrt(10)
mask = torch.Tensor([1,1,1,1,0,0])
mask = mask.unsqueeze(1)
scores = scores.masked_fill(mask==0, -np.inf)
也许面具是错的?
最佳答案
你的面具错了。尝试
scores = scores.masked_fill(scores == 0, -np.inf)
scores
现在看起来像tensor([[1.4796, 1.2361, 1.2137, 0.9487, -inf, -inf],
[0.6889, 0.4428, 0.6302, 0.4388, -inf, -inf],
[0.8842, 0.7614, 0.8311, 0.6431, -inf, -inf],
[0.9884, 0.8430, 0.7982, 0.7323, -inf, -inf],
[ -inf, -inf, -inf, -inf, -inf, -inf],
[ -inf, -inf, -inf, -inf, -inf, -inf]])
关于python - pytorch masked_fill : why can't I mask all zeros?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56328630/