PyTorch 개요

cherry·2024년 6월 22일
1

Naver AI Precourse

목록 보기
10/21

TensorFlow vs PyTorch

  • 가장 큰 차이점은 TensorFlow는 Static graphs 방식, PyTorch는 Dynamic computation graphs 방식이라는 것이다.
    즉, 텐서플로우는 그래프를 먼저 다 정의하고 \rightarrow 실행시점에 데이터를 feed하는 방식이라면, 파이토치는 실행하면서 그래프를 생성하는 방식이다.
  • 따라서 파이토치가 중간중간 바로 코드를 확인하며 디버깅하기 편하다는 장점이 있다.

Pytorch = Numpy(넘파이 구조) + AutoGrad(자동미분가능) + Function(다양한 함수 제공)

Numpy 구조와의 비교

GPU 사용

  1. 기본적으로 텐서가 가질 수 있는 데이터 타입은 numpy와 동일하나 GPU사용 여부만 다름.

  2. torch의 tensor는 GPU에 올려서 사용가능함. <- 더 공부 필요


Tensor Shape

1. view: tensor에서도 reshape를 활용 가능하나, 웬만하면 view를 사용하자.

  • contiguity 보장의 차이 때문이라고 한다. 이해는 아직 못함.

2. squeeze: 차원의 개수가 1인 차원을 삭제 (압축)

3. unsqueeze: 차원의 개수가 1인 차원을 추가


Tensor Operations

  1. 기본적인 텐서 연산은 numpy와 동일하다.

  2. 행렬곱 연산은 dot이 아닌 mm 사용하자. dot은 벡터 내적에 사용된다. mm은 행렬곱 연산에 사용되지만 반대로 벡터 연산은 지원하지 않는다.

  3. matmul이라는 행렬곱 연산도 있지만 matmal은 broadcasting이 자동으로 지원된다. broadcasting은 문제가 많으므로 이왕이면 mm 사용하자.


Tensor Operations for ML/DL Formula

nn.functional 모듈을 통해 다양한 수식 변환을 지원한다.

import torch.nn.functional as F





PyTorch 프로젝트 구조

이 부분은 다른 블로그들을 참고하자.

실행과 관련된 파일
train.py
test.py

설정과 관련된 파일
config.json
parse_config.py

__getitem__() 함수를 정의하면 마치 dictionary처럼 class를 활용할 수 있다.
이는 PyTorch에서 Dataset을 정의할 때 유용한데, 몇 번째 아이템을 가져올 때 dictionary 또는 배열 접근 방식처럼 가져올 수 있어서다.

출처: https://glanceyes.com/entry/PyTorch-프로젝트-구조-이해하기 [지그시:티스토리]

https://cow-coding.github.io/posts/day6_torch2/

profile
Physics Informed Machine Learning 천재만재

0개의 댓글