읽기일기

Learning PyTorch with Examples (1) – Tensors

http://pytorch.org/tutorials/beginner/pytorch_with_examples.html#tensors

Learning PyTorch with Examples

작성자: Justin Johnson

이 튜토리얼은 예제를 통해 PyTorch의 기본적인 컨셉트를 소개하고자 합니다.

그 중심에는 PyTorch가 제공하는 다음 두 기능을 알리는 것이 목적입니다.

  • numpy와 비슷한, 그렇지만 GPU에서 실행할 수 있는 n차원의 tensor
  • 신경망을 만들고 학습할 때 쓸 자동 미분 기능

앞으로의 예제에서는 fully-connected ReLU를 사용한 망을 사용할 것입니다. 이 망은 하나의 은닉층을 가지고 있으며, 경사 하강법(gradient descent)을 이용해서 랜덤 데이터에 대해 망의 출력과 정답 출력의 Euclidean distance를 최소화하도록 할 것입니다.

Note: 각각의 예제는 이 문서 끝에서 찾아볼 수 있습니다.

Tensors

Warm-up: numpy

PyTorch에 들어가기 전에 numpy를 이용하여 망을 구현해봅시다.

Numpy는 n차원의 배열 객체와 이 배열을 다루는 많은 함수를 제공합니다. Numpy는 계산 그래프나 딥러닝, 그래디언트 같은 기능은 제공하지 않지만 과학 컴퓨팅에 널리 쓰이는 프레임워크입니다. 하지만 랜덤 데이터를 다루는 2개 층을 가지는 신경망 정도는 순전파와 역전파 과정을 numpy만을 이용해서 쉽게 만들 수 있습니다.

PyTorch: Tensors

Numpy만으로도 참 좋은 프레임워크지만 계산을 빠르게 하기 위해 GPU를 활용하지 못합니다. 최근 딥러닝 망에서 GPU를 사용하면 50배 이상의 속도를 내는 것으로 알려져 있습니다. 때문에 numpy는 아쉽게도 딥러닝에 적당하지 않습니다.

이제 PyTorch의 가장 기본적인 컨셉트인 Tensor를 소개합니다. PyTorch의 Tensor는 개념적으로는 numpy의 배열과 동일합니다. Tensor는 n차원의 배열이고, 이와 관련된 연산을 PyTorch가 제공합니다. numpy 배열처럼 PyTorch Tensor는 딥러닝이나 계산그래프, 그래디언트에 대한 기능은 존재하지 않지만, 역시 과학 컴퓨팅을 위한 툴입니다.

하지만 numpy와는 달리 PyTorch Tensor는 GPU를 활용하여 계산을 빠르게 할 수 있습니다. PyTorch의 Tensor를 GPU에서 실행하려면, 간단하게 새로운 데이터 타입으로 캐스팅하기만 하면 됩니다.

이제 두 개 층을 가지는 망에 PyTorch Tensor를 이용해보겠습니다. 이전의 numpy 예제와 마찬가지로 순전파와 역전파 과정을 직접 구현하겠습니다.

 


Tags:
Add a Comment Trackback