들어가기 전에
딥러닝을 시작하면서 "여러가지 개념들을 직접 다 구현해야 하는가?" 에 대한 고민을 할 수 있습니다. 프로젝트를 할 때마다 모든 것을 개발해야한다면, 많은 시간이 걸리겠죠. 딥러닝 분야에서도 이를 해결해주는 여러 프레임워크가 존재합니다. 프레임워크란 무엇이고, 그 중에서 파이토치는 무엇인지 알아봅시다.
학습 목표
- 다양한 딥러닝 프레임워크를 알아보고, PyTorch의 특징과 경우에 따른 사용법을 고민해봅니다.
핵심 단어
- 딥러닝 프레임워크
- PyTorch
- Define by run
강의 영상
1) 프레임워크란?
딥러닝 뿐만 아니라 다양한 웹, 앱, 네트워크 등 다양한 프로그래밍 분야가 존재하는데요. 프로그램을 다룸에 있어서, 공통적으로 사용되는 기능들을 표준화된 소스코드로 만들어 놓고 사용할 수 있도록 제공하는 것을 프레임워크라고 합니다.
딥러닝에도 기초 함수부터 복잡한 신경망 등이 구현되어 있는 여러가지 프레임워크가 있고 PyTorch도 그 중 하나입니다. 이름이 다른만큼, 프레임워크마다 특징도 조금씩은 다르겠죠? 파이토치가 가지는 특징들을 이번 장을 통해 이해할 수 있길 바랍니다 :)
2) 딥러닝 프레임워크의 종류와 특징
개발에 사용되는 언어와 사용하는 방식에 따라 설계가 조금씩 달라지기 때문에 딥러닝 프레임워크도 그숫자도 아주 많은데요. 그 중 대표적으로 사용되는 프레임워크는 Google에서 개발된 TensorFlow와, Meta(구 Facebook)에서 개발된 PyTorch 두 가지가 있습니다. 두 프레임워크의 특징은 다음과 같고, 가장 큰 차이점은 Define and Run과 Define by Run에 있습니다.

3) Define and Run vs Define by Run
Define and Run의 특징을 가지는 TensorFlow의 경우,
- 실행할 계산에 관련된 그래프를 미리 다 정의하여 올려놓고
- 그래프에 투입될 데이터들을 집어넣어 연산을 수행하는 방식입니다.
- 따라서 한번 실행이 된 상태에서 에러가 나면 찾기가 힘듭니다.
반면 Define by Run의 특성을 가지고 있는 PyTorch의 경우,
- 연산이 이루어지는 시점에서 동적으로 그래프를 만들어 연산을 수행하기 때문에
- 조금 더 낮은 단위의 연산들로 구성 할 수 있게 되고
- 디버깅 및 구조 설계의 세분화가 가능해집니다.
강의 자료
comment
Pytorch는 Numby와 AutoGrad, 그리고 다양한 딥러닝 함수 지원 해준다.
Dynamic Computation Graph라는 특징을 가짐