Pytorch, 행렬 항목에 한 벡터의 순열을 추가 할 때 for 루프를 제거 하시겠습니까?

티나 팀

저는이 문서를 구현하려고 노력하고 있으며이 간단한 단계를 고수했습니다. 이것은주의와 관련이 있지만, 내가 고수하는 것은 for 루프를 사용하지 않고 행렬에 추가 된 벡터의 순열을 구현하는 방법입니다.

주의 점수에는 학습 된 편향 벡터가 추가되어 있으며 이론은 점수가 나타내는 두 토큰의 상대 위치 (ji)를 인코딩한다는 것입니다. 여기에 이미지 설명 입력

그래서 알파는 T x T 행렬이고, T는 전달되는 배치에 따라 달라지며, B는 길이가 고정되어야하고 2T만큼 커야하는 학습 된 편향 벡터입니다. 내가 생각하는 현재 구현은 다음과 같습니다.

    def __init__(...):
       ...
        self.bias = torch.nn.Parameter(torch.randn(config.n),requires_grad = True)
        stdv = 1. / math.sqrt(self.bias.data.size(0))
        self.bias.data.uniform_(-stdv, stdv)
     def forward(..)
        ...
        #n = 201  (2* max_seq_len + 1)

        B_matrix = torch.zeros(self.T, self.T) # 60 x 60
        for i in range(self.T):
          B_matrix[i] = self.bias[torch.arange(start=n//2-i, end=n//2-i+T)])]

        attention_scores = attention_scores + B_matrix.unsqueeze(0)
        # 64 x 60 x 60   
        ...

이것은 유일한 관련 부분입니다

B_matrix = torch.zeros(self.T, self.T) # 60 x 60
        for i in range(self.T):
          B_matrix[i] = self.bias[torch.arange(start=n//2-i, end=n//2-i+T)])]

기본적으로 for 루프를 사용하여 각 행을 탐색하지 않으려 고합니다.

하지만이 모델이 매우 클 때는 이것이 정말 비효율적이며 비용이 많이 든다는 것을 알고 있습니다. 학습 된 편향 벡터의 순열을 얻기 위해 각 행에 대해 명시적인 for 루프를 수행하고 있습니다.

누구든지 스마트 방송을 통해 더 나은 방법으로 나를 도울 수 있습니까?

생각한 후에 제로 행렬을 인스턴스화 할 필요는 없지만 여전히 for 루프를 제거 할 수 없습니까? B_matrix는 타일 된 b 벡터와 크기가 다르기 때문에 gather를 사용할 수 없습니다.

functor = lambda i : bias[torch.arange(start=n//2-i, end=n//2-i+T)]
B_matrix = torch.stack([functor(i) for i in torch.arange(T)])
Jodag

나는 n당신의 코드에 무엇이 있어야 하는지 알아낼 수 없었지만 다음 예제가 torch.meshgrid당신이 찾고있는 것을 제공 한다고 생각합니다 .

가정

n, m = 10, 20   # arbitrary
a = torch.randn(n, m)
b = torch.randn(n + m)

그때

for i in range(n):
    for j in range(m):
        a[i, j] = a[i, j] + b[n - i + j]

다음과 같다

ii, jj = torch.meshgrid(torch.arange(n), torch.arange(m))
a = a + b[n - ii + jj]

후자는 외부 작업이지만 일반적으로 좋은 일입니다. 당신이 실제로 현재 위치에서 작업을 원하는 경우 교체 a =와 함께 a[...] =.

이것은 정수 배열 인덱싱 의 예입니다. 여기서 . b와 같은 모양의 텐서를 사용하여 인덱싱합니다a .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

iOS : Accelerate Framework를 사용하여 행렬에서 열 또는 행을 추가 / 제거 하시겠습니까?

분류에서Dev

열거 형 벡터를 추가 할 때 발생하는 문제

분류에서Dev

루프 시스템 내부의 배열에 항목을 추가 할 때 작동하지 않습니다 (신속).

분류에서Dev

배열에 추가하는 항목의 양을 제한 할 수 있습니까?

분류에서Dev

벡터의 하위 벡터 항목을 동일한 벡터의 다른 하위 벡터에 추가 할 수 있습니까?

분류에서Dev

데이터를 사용할 수있을 때만 한 번에 세 개의 항목을 행에 추가하는 방법은 무엇입니까?

분류에서Dev

사용자가 페이지를 변경할 때 Flipview에서 항목을 제거하고 싶습니다. 제가 뭔가할만한 일이 있을까요?

분류에서Dev

Pandas 패널의 항목에 열을 한 번에 추가 하시겠습니까?

분류에서Dev

행렬의 단일 열에 벡터를 어떻게 추가 할 수 있습니까?

분류에서Dev

벡터 간의 거리를 계산할 때 이중 'for 루프'로 인한 2 차 계산을 피하는 방법

분류에서Dev

데이터 위치 이름을 기준으로 목록 항목을 클릭 할 때 추가 클래스를 추가 하시겠습니까?

분류에서Dev

양식에 행을 제거하고 추가 할 때 이상한 동작

분류에서Dev

AnimatedList에서 추가하거나 제거 할 때 목록 항목의 위치를 부드럽게 트위닝하는 방법이 있습니까?

분류에서Dev

데이터가 고갈 될 때까지 다른 행에서 값을 제거 하시겠습니까?

분류에서Dev

HTML의 암호에 제한을 추가 하시겠습니까?

분류에서Dev

R에서 가장 자주 발생하는 행렬 행의 요소를 제거 하시겠습니까?

분류에서Dev

VB의 목록에 항목을 추가 할 때 발생하는 문제

분류에서Dev

C #을 사용하여 API를 호출 할 때 Json 문자열에서 이상한 문자를 제거 하시겠습니까?

분류에서Dev

배열에서 항목을 제거하고 추가 하시겠습니까?

분류에서Dev

배열에서 항목을 제거하고 추가 하시겠습니까?

분류에서Dev

항목을 추가 / 제거하더라도 목록에서 내 개체의 위치를 어떻게 해시 할 수 있습니까?

분류에서Dev

동일한 키를 가진 항목이 이미 추가되었습니다.”데이터 집합을 추가하려고 할 때 SSRS에서 오류 발생

분류에서Dev

목록에서 항목을 제거하고 다시 추가 할 때 목록에서 위치 유지

분류에서Dev

WPF에서 항목을 추가하거나 제거 할 때 목록 상자를 자동으로 새로 고치는 방법은 무엇입니까?

분류에서Dev

요일을 제거하거나 추가 할 때 요일 배열을 항상 순서대로 유지

분류에서Dev

호환 가능한 벡터를 할당 하시겠습니까?

분류에서Dev

Knockoutjs를 사용하여 관찰 가능한 배열에서 항목을 제거 할 수 없습니다.

분류에서Dev

끝에 추가하여 행렬의 각 행을 확장 하시겠습니까?

분류에서Dev

다중 처리를 사용할 때 풀 맵 작업에 시간 제한을 설정 하시겠습니까?

Related 관련 기사

  1. 1

    iOS : Accelerate Framework를 사용하여 행렬에서 열 또는 행을 추가 / 제거 하시겠습니까?

  2. 2

    열거 형 벡터를 추가 할 때 발생하는 문제

  3. 3

    루프 시스템 내부의 배열에 항목을 추가 할 때 작동하지 않습니다 (신속).

  4. 4

    배열에 추가하는 항목의 양을 제한 할 수 있습니까?

  5. 5

    벡터의 하위 벡터 항목을 동일한 벡터의 다른 하위 벡터에 추가 할 수 있습니까?

  6. 6

    데이터를 사용할 수있을 때만 한 번에 세 개의 항목을 행에 추가하는 방법은 무엇입니까?

  7. 7

    사용자가 페이지를 변경할 때 Flipview에서 항목을 제거하고 싶습니다. 제가 뭔가할만한 일이 있을까요?

  8. 8

    Pandas 패널의 항목에 열을 한 번에 추가 하시겠습니까?

  9. 9

    행렬의 단일 열에 벡터를 어떻게 추가 할 수 있습니까?

  10. 10

    벡터 간의 거리를 계산할 때 이중 'for 루프'로 인한 2 차 계산을 피하는 방법

  11. 11

    데이터 위치 이름을 기준으로 목록 항목을 클릭 할 때 추가 클래스를 추가 하시겠습니까?

  12. 12

    양식에 행을 제거하고 추가 할 때 이상한 동작

  13. 13

    AnimatedList에서 추가하거나 제거 할 때 목록 항목의 위치를 부드럽게 트위닝하는 방법이 있습니까?

  14. 14

    데이터가 고갈 될 때까지 다른 행에서 값을 제거 하시겠습니까?

  15. 15

    HTML의 암호에 제한을 추가 하시겠습니까?

  16. 16

    R에서 가장 자주 발생하는 행렬 행의 요소를 제거 하시겠습니까?

  17. 17

    VB의 목록에 항목을 추가 할 때 발생하는 문제

  18. 18

    C #을 사용하여 API를 호출 할 때 Json 문자열에서 이상한 문자를 제거 하시겠습니까?

  19. 19

    배열에서 항목을 제거하고 추가 하시겠습니까?

  20. 20

    배열에서 항목을 제거하고 추가 하시겠습니까?

  21. 21

    항목을 추가 / 제거하더라도 목록에서 내 개체의 위치를 어떻게 해시 할 수 있습니까?

  22. 22

    동일한 키를 가진 항목이 이미 추가되었습니다.”데이터 집합을 추가하려고 할 때 SSRS에서 오류 발생

  23. 23

    목록에서 항목을 제거하고 다시 추가 할 때 목록에서 위치 유지

  24. 24

    WPF에서 항목을 추가하거나 제거 할 때 목록 상자를 자동으로 새로 고치는 방법은 무엇입니까?

  25. 25

    요일을 제거하거나 추가 할 때 요일 배열을 항상 순서대로 유지

  26. 26

    호환 가능한 벡터를 할당 하시겠습니까?

  27. 27

    Knockoutjs를 사용하여 관찰 가능한 배열에서 항목을 제거 할 수 없습니다.

  28. 28

    끝에 추가하여 행렬의 각 행을 확장 하시겠습니까?

  29. 29

    다중 처리를 사용할 때 풀 맵 작업에 시간 제한을 설정 하시겠습니까?

뜨겁다태그

보관