파이토치를 공부하기 전에 파이토치 개요에 대해 알아보고자 한다.
파이토치 공식 튜토리얼에서는 파이토치를 다음과 같이 언급하고 있다.
- 넘파이를 대체하면서 GPU를 이용한 연산이 필요한 경우
- 최대한의 유연성과 속도를 제공하는 딥러닝 연구 플랫폼이 필요한 경우
하지만 무엇보다 주목받는 이유는 간결하고 빠른 구현성에 있다고 한다. 사실 위의 이유는 와닿지는 않고 최근 논문들의 코드가 대부분 파이토치로 구현되어 있기 때문에 공부의 필요성을 느꼈다.
1. 파이토치 특징 및 장점
한마디로 말하면 GPU에서 텐서 조작 및 동적 신경망 구축이 가능한 프레임워크이다.
여기서 말하는 동적 신경망이란 훈련을 반복할 때마다 네트워크 변경이 가능한 신경망을 의미한다고 한다. 연산 그래프를 정의하는 것과 동시에 값도 초기화되는 'Define by Run' 방식을 사용하기 때문에 연산 그래프와 연산을 분리해서 생각할 필요가 없고 때문에 코드를 이해하기 쉽다.
2. 파이토치의 아키텍쳐
파이토치의 아키텍처는 간단하다. 크게 세 개의 계층으로 나누어있다고 한다. 가장 상위 계층은 파이토치 API가 위치해 있으며 그 아래는 파이토치 엔진이 있다. 파이토치 엔진에서는 다차원 텐서 및 자동 미분을 처리한다. 그리고 마지막으로 가장 아래에는 텐서에 대한 연산을 처리한다.
3. 텐서를 메모리에 저장하기
텐서는 1차원이든 N차원이든 메모리에 저장할 때는 1차원 배열 형태가 된다. 즉, 1차원 배열 형태여야만 메모리에 저장할 수 있다.
그리고 변환된 1차원 배열을 스토리지라고 한다. 스토리지를 이해하기 위해서는 오프셋과 스트라이드 개념을 알아야 한다고 한다.
- 오프셋(offset) : 텐서에서 첫 번째 요소가 스토리지에 저장된 인덱스
- 스트라이드(stride) : 각 차원에 따라 다음 요소를 얻기 위해 건너뛰기가 필요한 스토리지의 요소 개수이다. 즉, 스트라이드는 메모리에서의 텐서 레이아웃을 표현하는 것으로 이해하면 된다. 요소가 연속적으로 저장되기 때문에 행 준심으로 스트라이드는 항상 1이다.
'딥러닝 > Pytorch' 카테고리의 다른 글
Pytorch 기본 문법 - 모델 훈련 (0) | 2022.05.23 |
---|---|
Pytorch 기본 문법 - 파라미터 정의 (0) | 2022.05.23 |
Pytorch 기본 문법 - 모델 정의 (0) | 2022.05.23 |
Pytorch 기본 문법 - 데이터 준비 (1) | 2022.05.18 |
Pytorch 기본 문법 - 텐서 (0) | 2022.05.18 |