>source

-np.inf 로 점수 행렬의 모든 0을 마스킹하고 싶습니다. , 그러나 0의 일부만 마스크로 표시 할 수 있습니다.

오른쪽 상단에 -np.inf 로 가려지지 않은 0이 여전히 있습니다.

내 코드는 다음과 같습니다.

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)

마스크가 틀렸을까요?


  • 답변 # 1

    마스크가 잘못되었습니다. 시도

    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]])
    
    

  • 이전 forms - Django Emailfield 고정 접미사
  • 다음 sql - 모든 다른 값으로 여러 행 업데이트