matrix operation

이윤석·2021년 11월 2일
0

Matrix operation

view, reshape, transpose, permute 차이

  • transpose(-2,-1), transpose(-1,-2) 동작 같음
  • permute() : () 안에 있는 숫자들이 의미하는 것은 어떤 차원을 어떻게 바꿀지
    • 연산할 때, 차원을 바꿀 필요 있을 수 있음...(행렬 곱이 결국 어떤 값들에 대해 연산을 할지니까...)
  • 행렬 shape를 바꾸면서 뭉게지면 정보를 손실하는게 아닌가....nlp라서 값이 존재만하면 되나??? local한 정보에 대해서 중요한게 아니니까????

  • matrix shape에 대해 transpose, permute, view, reshape 으로 연산 가능한 shape으로 맞춰ㅁ

comparison between 4 operation

  • view vs reshape

    • view : tensor 모양 변경 가능, 원본 tensor와 기반 되는 data 공유(origin data change -> tensor also changed)
    • reshape : tensor 모양 변경 가능, return copy of origin tensor(origin data change -> tensor not changed)
  • view vs transpose

    • view : tensor 모양 변경 가능, contiguous tensor에서 동작, return contiguous tensor
    • transpose : tensor 모양 변경 가능, non-contiguous/contiguous tensor 모두 동작 but 반환은 non-contiguous tensor로 반환
    • *contiguous : 각 데이터가 메모상에서 인접한지??????
      • contiguous하다 = tensor의 데이들이 memory상에서 인접하게 있다
  • transpose vs permute

    • transpose : 딱 두 개의 차원 맞교환
      • x.transpose(0,2) : 0, 2번째 차원 맞교환
    • permute : 모든 차원 맞교환. 결과 non-contiguous
      • x.permute(2,1,0) : 2->0 , 1->1, 0->2 로 차원 맞교환

Squeeze, Unsqueeze

  • Squeeze : 1인 차원 제거
  • Unsqueeze : 특정 위치 1인 차원 추가
profile
Be Smart with 성실한 호기심

0개의 댓글