PyTorch Basics

JH_CHOI·2022년 1월 24일
0
post-custom-banner

PyTorch

목표

PyTorch에서 데이터들의 연산을 위한 Tensor 사용법 및 자동 미분 기능인 AutoGrad에 대해 학습합시다. Tensor를 학습하여 추후 Custom Network를 작성할 수 있는 기본 지식을 익히고, AutoGrad의 작동 원리를 배워 backward 함수가 학습 시 어떻게 내부적으로 동작되는지 확인합시다.

numpy + AutoGrad

Tensor

  • 다차원 Arrays를 표현하는 PyTorch 클래스
  • 사실상 numpy의 ndarray와 동일하다. (numpy: ndarray = PyTorch: Tensor = TensorFlow: Tensor)
  • Tensor를 생성하는 함수도 거의 동일하다.
  • Tensor 생성은 list나 ndarray를 사용 가능하다.
  • 기본적으로 tensor가 가질 수 있는 data 타입은 numpy와 동일하다.
    • GPU 사용가능 여부만 다르다.
  • 기본적으로 numpy 사용법이 pytorch에 대부분 적용된다. (ex: flatten, ones_like, ...)
  • PyTorch의 tensor는 GPU에 올려서 사용가능하다.

Tensor handling

view, squeeze, unsqueeze 등으로 tensor 조정가능

  • view: reshape과 동일하게 tensor의 shape을 변환
    • view와 reshape는 contiguity 보장의 차이
    • view는 항상 보장, reshape는 그렇지 않다.
    • reshape의 보장이 깨지는 순간 copy를 해준다.
  • squeeze: 차원의 개수가 1인 차원을 삭제 (압축)
  • unsqueeze: 차원의 개수가 1인 차원을 추가

Tensor Operations

  • 기본적인 tensor의 operations(연산)는 numpy와 동일
  • 행렬곱셈 연산은 함수 dot이 아닌 mm사용
    • 스칼라나 벡터는 dot을 쓰고 행렬은 mm, matmul을 사용하는 것을 권장한다.
  • mm은 broadcasting이 지원이 되지 않고 matmul은 broadcasting을 지원한다.

ML/DL formula

  • nn.functional 모듈을 통해 다양한 수식 변환을 지원함
  • AutoGrad : PyTorch의 핵심은 자동 미분의 지원 -> backward 함수 사용
profile
꿈이 큰 새싹 개발자입니다.
post-custom-banner

0개의 댓글