[D+6] Pytorch

siwoo·2023년 11월 13일
0

❓ Why Pytorch?

보편적으로 사용하는 딥러닝 프레임 워크에는 tensorflow, pytorch, keras가 있다.

프레임 워크kerastensorflowpytorch
특징low-level APIlow-high level APIlow-high level API
tensorflow와 pytorch를 감싸는 wrapperdefine and rundefine by run
상업용연구용

keras는 초급자도 사용하기 쉬운 직관적인 문법을 갖고 있다는 장점이 있다. 하지만 그만큼 세세한 부분을 사용자 마음대로 바꿀 수 없기 때문에 제한적이다.

세밀한 세팅을 위해서는 tensorflow 혹은 pytorch를 사용한다.

tensorflow는 아래의 순서에 따라 그래프를 생성한다.
1. 그래프를 먼저 정의한다. (define)
2. 실행시점에 데이터를 넣어 출력한다. (run)
그래프를 먼저 정의하기 때문에 유동적인 그래프 생성이 불가능하다.

pytorch는 실행하여 그래프를 생성한다. (define by run)
따라서 보다 동적인 그래프 생성이 가능하다. (dynamic graphic computation)

이러한 특성에 의해 pytorch는 연구, tensorflow는 상업용 목적으로 많이 쓰인다.
부캠은 배움의 목적이기 때문에 pytorch를 가르치는 것 같다.

🌱 Basic Grammers

Pytorch = numpy + autograd + function
이라는 수식으로 정의할 수 있다.

✏ numpy

tensor 연산은 numpy 연산과 아주 유사하다.
다른 점이 있다면, GPU에 올려서 연산이 가능하며 view라는 효율적인 display 함수가 있다는 것이다.

view는 reshape 함수와 마찬가지로 텐서의 shape을 바꾸어 볼 수 있는 함수이다.

viewreshape
차이원본의 메모리 주소를 참고하여 새로운 모양의 텐서 반환가능하다면 view를 반환, 불가능하다면(uncontiguous) contiguous 한 텐서로 copy해 view 반환

이렇게 본다면 view 함수가 훨씬 효율적인데 왜 reshape 함수가 따로 있나 싶다.

하지만 view 함수는 contiguous 하지 않을 경우 작동하지 않기 때문에 그러한 경우에 대비해 reshape 함수를 일반적으로 많이 사용하는 것 같다.

✏ autograd

backward() -> 역전파 계산을 통해 수식에 사용된 텐서 객체의 grad를 업데이트한다.

✏ function

torch.nn.functional 내에서 제공하는 다양한 함수가 있다.

🔥 Structure of Project

기능별로 다양한 모듈을 만들고 조립하는 식으로 프로젝트 파일을 만들 수 있다.

0개의 댓글