Week2 - PyTorch 기본

nayeoniee·2022년 2월 6일
0

Boostcamp AI Tech

목록 보기
2/10
post-thumbnail

1강. Introduction to PyTorch

PyTorch vs. TensorFlow

  • Keras: TensorFlow의 Wrapper
  • TensorFlow: Static graph, define and run
    TensorFlow는 그래프를 먼저 정의한 후에, 실행 시점에 데이터를 feed하는 방식. Google꺼라서 production, cloud, multi-gpu 활용에 수월함.
  • PyTorch: Dynamic computation graph
    PyTorch는 실행하면서 그래프를 생성하는 방식, 중간 중간에 값 확인이 가능, pythonic code. facebook에서 개발했으며 디버깅이 수월해 아이디어 구현, 논문에 유용함.

(pytorch와 tensorflow를 모두 사용해 보지 않아서 dynamic/static graph의 차이를 아직 잘 모르겠다 ㅠ)

2강. PyTorch Basics

  • PyTorch 핵심 기능: Numpy + AutoGrad + Function

1. Numpy

numpy에는 ndarray라는 객체를, pytorch에서는 Tensor라는 객체를 사용한다.
Tensor 만들기: ndarray → Tensor, list → Tensor 생성 모두 가능하다.

Tensor의 type은 numpy와 비슷하지만, GPU 지원 여부가 다르다.

  • view: reshape과 동일한 기능이지만, reshape대신에 view 사용을 권장한다.

  • reshape은 값을 복사해 다른 메모리를 가리킨다. view는 값을 복사하지 않고 기존에 가리키던 메모리의 형태만 다르게 표현, 동일한 주소의 메모리 값을 바꾸면 같이 변한다.

  • squeeze: 1인 차원을 제거(압축)

  • unsqueeze: 특정 위치에 1인 차원을 추가, 어느 위치에 추가할지 unsqueeze(dim)을 파라미터로 넣어야 한다.

  • torch.mm( ) 과 torch.dot( )

  • torch.mm() : 행렬 곱 연산
  • torch.dot() : 내접 연산
  • torch.mm( ) 과 torch.matmul( ) - 결과를 정확하게 보기 위해 matmul보다는 mm을 사용한다.
  • torch.mm() : 행렬 곱 연산, broad casting 지원X
  • torch.matmul() : broad casting 지원

2. AutoGrad

pytorch에서는 backward()함수를 사용하면 자동으로 미분값을 계산해준다.

w에 대한 미분 구하기

변수가 2개인 편미분 예제

3강. PyTorch 프로젝트 구조 이해하기

  • 개발 초기 단계에서는 대화식 개발 과정이 유리함 → 학습과정, 디버깅 등 지속적인 확인 가능
  • 배포 및 공유 단계에서는 jupyter notebook 공유가 어려움 → 쉽게 재현하기 어려움, 실행순서가 꼬임
  • 딥러닝 코드도 하나의 프로그램으로, 개발 용이성 확보, 유지보수 향상이 필요함
  • pytorch-template 코드 주석 달면서 공부하기

references
위키독스 텐서 조작하기
pytorch-template

profile
개발노트

0개의 댓글

관련 채용 정보