*PyTorch의 특징 (tensorflow와 다른점)
- Computational Graph
- 연산의 과정을 그래프로 표현
- Define and Run : 그래프를 먼저 정의 -> 실행시점에 데이터 feed
- Define by Run (Dynamic Computational Graph) : 실행을 하면서 그래프를 생성하는 방식
- 연산의 과정을 그래프로 표현
*Why PyTorch
- Define by Run의 장점 : 즉시 확인 가능 -> pythonic code
- GPU support, Good API and community
- 사용하기 편한 장점이 가장 큼
- TF는 production과 scalability의 장점
- Numpy + AutoGrad + Function
- Numpy 구조를 가지는 Tensor 객체로 array 표현
- 자동미분을 지원하여 DL연산을 지원
- 다양한 형태의 DL을 지원하는 함수와 모델을 지원함
*Tensor
- 다차원 Arrays 를 표현하는 PyTorch 클래스
- 사실상 numpy의 ndarray와 동일 (TensorFlow의 Tensor와도 동일)
- Tensor를 생성하는 함수도 거의 동일
- Tensor 생성은 list나 ndarray를 사용 가능
*Numpy like operations
- 기본적으로 pytorch의 대부분의 사용법이 그대로 적용됨
- pytorch의 tensor는 GPU에 올려서 사용가능
- Tensor handling - view, squeeze, unsqueeze 등으로 tensor 조정가능
- view : reshape과 동일하게 tensor의 shape을 변환
- squeeze : 차원의 개수가 1인 차원을 삭제 (압축)
- unsqueeze : 차원의 개수가 1인 차원을 추가
- view : reshape과 동일하게 tensor의 shape을 변환
*Tensor operations
- 기본적인 tensor의 operations는 numpy와 동일
- 행렬곱셈 연산은 함수는 dot이 아닌 mm 사용
- mm과 matmul은 broadcasting 지원 차이 (mm: x , matmul : o)
- matmul : a의 1차원은 batch를 의미하고 a : 2 x 3 와 b : 3 x 1 broadcasting이 일어나 결과는 5 x 2 x 1이 됨
- matmul : a의 1차원은 batch를 의미하고 a : 2 x 3 와 b : 3 x 1 broadcasting이 일어나 결과는 5 x 2 x 1이 됨
- nn.functional 모듈을 통해 다양한 수식 변환을 지원
- PyTorch의 핵심은 자동 미분의 지원 -> backward 함수 사용
*PyTorch 프로젝트 구조 이해하기
- 코드도 레고블럭 처럼 : OOP + 모듈 -> 프로젝트
- 다양한 프로젝트 템플릿이 존재
- 사용자 필요에 따라 수정하여 사용
- 실행, 데이터, 모델, 설정, 로깅, 지표, 유틸리티 등 다양한 모듈들을 분리하여 프로젝트 템플릿화
- Module 구성
- 이 프로젝트 구조를 많이 쓴다
'부스트캠프 AI Tech > [Week3] Pytorch' 카테고리의 다른 글
[Week3] PyTorch 활용하기 [Day4] (0) | 2021.08.20 |
---|---|
[Week3] PyTorch 구조 학습 [Day2 ~ Day3] (0) | 2021.08.18 |