-
[TIL] pytorch Basic (1)개발자노트/네이버 부스트캠프 AI 2023. 11. 27. 22:10
🔑Keyword
- custom model
- custom dataset, dataLoader
- 모델 학습, 최적화
- hyperparameter tuning
- 다중 GPU 활용
computational graph
define and run
그래프를 먼저 정의하고 실행시점에 데이터 feed
= tensorflow
define by run
실행을 하면서 그래프를 생성
= pytorch
파이토치의 특징
- numpy구조를 가지는 tensor 객체로 array 표현
- 자동미분을 지원하여 DL 연산
- 다양한 형태의 DL을 지원하는 함수와 모델 지원
tensor
- 다차원 arrays를 표현하는 pytorch 클래스
- np의 ndarray와 동일, tensorflow의 tensor와 동일
- 함수도 거의 동일
import torch x_data = torch.tensor(data)
tensor handling
- view : reshape과 동일하게 shape 변환
- squeeze : 차원의 개수가 1인 차원을 삭제(압축)
- unsqueeze : 차원의 개수가 1인 차원 추가
💡view와 reshape의 차이
view는 tensor가 메모리에 연속적으로 존재할 때만 사용할 수 있음
(텐서의 원소들이 메모리상에서 인접한 위치에 저장되어 있는 경우)
is_contiguous : tensor가 메모리에 연속적으로 존재하는지 체크하는 함수
tensor가 contiguous하지 않는 경우
t() - transpose연산
permute()연산 등..
view가 contiguous하기 때문에 copy 없이 더 빠른 연산이 가능하다.
행렬곱셈 연산은 dot이 아닌 mm을 사용한다.
matrix multiple
🔷mm()와 matmul()의 차이
tensor.mm()
오직 2d 텐서간의 행렬 곱셈만을 지원함
tensor.matmul()
- 두 텐서간의 행렬 곱셈 뿐만 아니라, 다양한 행렬 및 텐서 연산 수행
- 브로드 캐스팅 지원
브로드 캐스팅(broadcasting)
행렬이나 텐서의 차원을 자동으로 확장하여 다른 텐서와의 연산이 가능하도록 함
nn.functional 모듈
AutoGrad
자동 미분
w = torch.tensor(2.0, requires_grad=True) y = w**2 z = 10*y + 25 z.backward() w.grad
jupyter notebook
- 특정 환경에 종속적인 라이브러리와 설정을 포함하기 때문에 다른 환경에서 배포나 공유가 어려움
- 셀을 재실행하면 변수의 상태가 변함 : 실행 순서 꼬일 수 있음
pytorch project templete
- 코드의 모듈화, 재사용성 향상
- 실행순서 꼬임x, 유지보수, 배포의 복잡성 해결
- 코드의 모듈을 분리하여 관리
- 로깅, 지표, 유틸리티는 하나의 파일이 아닌 각자의 모듈 또는 파일로 관리됨
__getitem__
인스턴스를 리스트나 딕셔너리처럼 취급할 수 있음
for, in연산자 사용 가능
인자는 하나만 받음
읽기전용으로 간주됨
예) parse_config.py 에서 __getitem__ → config에 딕셔너리처럼 접근함
'개발자노트 > 네이버 부스트캠프 AI' 카테고리의 다른 글
[네부캠 AI tech] 4주차 주간회고 (11/27~12/01) (0) 2023.12.01 [TIL] pytorch Basic (2) (0) 2023.11.29 [네부캠 AI tech] 3주차 주간회고 (11/20~11/24) (2) 2023.11.24 [네부캠 AI tech] 2주차 주간회고 (11/13~11/17) (2) 2023.11.17 [네부캠 AI tech] 1주차 주간회고 (11/06~11/10) (0) 2023.11.10