본문 바로가기

ML & DL/pytorch11

[pytorch] 커스텀 연산 with autograd References Autograd mechanics (link) PyTorch API documentation (link) Extending PyTorch (link) 이번 포스팅에서는 파이토치의 autograd에 대해서 조금 더 세부적으로 살펴보고(주로 공식 홈페이지 내용을 참조하였습니다), 커스텀 확장하는 방법, 즉, 커스텀 op를 구현하는 방법에 알아보도록 하겠습니다. 다룰 내용은 사실 파이토치를 사용하기 위해서 꼭 알아야 하는 내용은 아닙니다만, 알아두면 파이토치의 동작에 대해 조금 더 깊게 이해할 수 있고 디버깅할 때도 유용할 수 있습니다. Autograd Mechanics How autograd encodes the history Developer Notes에서 autograd는 revers.. 2022. 12. 26.
[pytorch] autograd References PyTorch Official Tutorial (link1, link2) 파이토치의 autograd는 파이토치가 머신러닝 프로젝트를 빌드하는데 유연하고 빠르게 만들어주는 것들 중 하나입니다. 이는 복잡한 계산인 mutiple partial derivaties (referred to as gradients)를 빠르고 쉽게 계산할 수 있도록 해줍니다. 이 연산은 backpropagation 기반의 뉴럴 네트워크 학습의 핵심입니다. autograd는 런타임에서 동적으로 연산을 추적합니다. 즉, 모델에 decision branches나 길이를 런타임 전까지 알 수 없는 loop가 있는 경우에도 연산은 여전히 올바르게 추적되고 올바른 gradients를 얻을 수 있습니다. 이 때문에 파이토치는.. 2022. 12. 5.
[pytorch] Tensors References PyTorch Official Tutorial (link) Tensors는 파이토치에서 중심이 되는 data abstraction 입니다. 이번 포스팅에서는 튜토리얼에서 설명하고 있는 torch.Tensor에 대해서 조금 더 자세히 살펴보도록 하겠습니다. import torch import math 시작하기에 앞서, 위의 두 패키지를 import 해줍니다. Creating Tensors Tensor를 생성하는 가장 간단한 방법은 torch.empty() 를 호출하는 것입니다. x = torch.empty(3, 4) print(type(x)) print(x) 여기서 우리는 torch 모듈에 있는 수 많은 factory methods 중 하나를 사용해서 텐서를 생성했으며, 여기서 생성한 .. 2022. 12. 1.
[pytorch] Tutorial - Optimizing Model Parameters References Official PyTorch Tutorial (link) 이번에는 앞선 튜토리얼에서 살펴본 내용들을 통합하여, 네트워크 모델을 학습, 검증, 테스트하는 방법을 살펴보겠습니다. 모델의 학습은 iterative process입니다. 각 반복에서 모델을 output을 계산하고, 실제 결과와의 loss를 통해 error를 계산하고 파라미터(모델의 weights)에 대한 gradient를 계산한 뒤, gradient descent 알고리즘을 사용하여 파라미터를 최적화합니다. Prerequisite Code 다음 코드를 통해서 FashionMNIST 데이터를 받아오고, 간단한 네트워크를 구성합니다. import torch from torch import nn from torch.utils.da.. 2022. 11. 30.
[pytorch] Tutorial - Automatic Differentiation (autograd) References Official Pytorch Tutorial (link) torch.autograd Neural network를 학습할 때, 가장 많이 사용되는 알고리즘은 backpropagation 입니다. 이 알고리즘에서 파라미터, 즉, 모델의 weights는 주어진 파라미터에 대한 loss function의 gradient에 따라 조정됩니다. Gradient를 계산하기 위해서 파이토치는 torch.autograd라는 built-in differentiation engine을 사용하며, 이는 computational graph의 gradient를 자동으로 계산할 수 있도록 지원합니다. 간단하게 다음과 같이 input이 x, 파라미터가 w, b로 이루어진 하나의 레이어로 구성된 네트워크와 loss.. 2022. 11. 29.
[pytorch] Tutorial - Build the Neural Network References Official PyTorch Tutorial (link) Build the Neural Network Neural network는 데이터에 대한 연산을 수행하는 layer 또는 module로 구성됩니다. 파이토치에서 torch.nn 네임스페이스는 neural network를 구성하는데 필요한 레이어들을 제공합니다. 파이토치의 모든 레이어(모듈)들은 nn.Module의 sub class이며, neural network는 다른 레이어(모듈)들로 구성된 레이어(모듈)일 수도 있습니다. 이번 포스팅에서 파이토치 튜토리얼에서 설명하는 neural network에 대해 살펴보도록 하겠습니다. import os import torch from torch import nn from torch.ut.. 2022. 11. 29.
[pytorch] Tutorial - Datasets & DataLoaders & Transforms References Official PyTorch Tutorials (link) 파이토치에서는 데이터를 쉽게 전처리하고, 모델을 학습하는 코드와 별도로 모듈화할 수 있는 기능인 torch.utils.data.DataLoaders와 torch.utils.data.Dataset을 제공합니다. Datasets은 샘플 데이터와 대응하는 라벨을 저장하고, DataLoader는 Dataset을 순회하면서 쉽게 샘플 데이터에 액세스할 수 있도록 해줍니다. Loading a FashionMNIST Dataset torchvision에서 제공하는 FashionMNIST가 Dataset의 서브클래스인데, 파이토치는 다양한 이미지, 텍스트, 오디오 데이터셋을 제공합니다. Image Datasets Text Datasets .. 2022. 11. 26.
[pytorch] Tutorial - Tensors References Official PyTorch Tutorials (link) PyTorch Documentations (link) Tensor Vies (link) 텐서는 배열이나 행렬과 매우 유사한 데이터 구조체입니다. 파이토치에서 텐서는 모델의 input/output 그리고, 모델의 파라미터를 표현하는데 사용됩니다. 텐서는 numpy의 ndarray와 유사한데, 텐서는 GPU나 다른 하드웨어 가속기에서도 사용할 수 있습니다. 실제로, 파이토치의 텐서와 넘파이의 배열은 기본 메모리를 공유할 수 있어서, 서로 간의 변환에서 데이터를 복사할 필요가 없습니다. 이에 대해서는 아래에서 조금 자세히 살펴보도록 하겠습니다. 텐서는 automatic differeniation(자동 미분)에 최적화되어 있는데, .. 2022. 11. 26.
[Pytorch][Kaggle] Cats vs. Dogs Classification (torch version : 1.7.0) 지난번 tensorflow에서 Cats vs. Dogs Classification에 이어서, Pytorch를 사용해서 해당 문제를 구현해보도록 하겠습니다. 2020/12/04 - [ML & DL/tensorflow] - [Tensorflow][Kaggle] Cats vs. Dogs Classification [Tensorflow][Kaggle] Cats vs. Dogs Classification www.kaggle.com/c/dogs-vs-cats-redux-kernels-edition Dogs vs. Cats Redux: Kernels Edition Distinguish images of dogs from cats www.kaggle.com 딥러닝 연습으로 K.. 2020. 12. 7.
[Pytorch] softmax와 log_softmax (그리고 CrossEntropyLoss) Pytorch로 MNIST 분류 예제 문제를 구현하다가, torch.nn.functional에 softmax, log_softmax 두 가지가 있다는 것을 발견했습니다. 2020/12/01 - [ML & DL/pytorch] - [Pytorch] MNIST Classification (2020/12/02 수정) [Pytorch] MNIST Classification (2020/12/02 수정) (pytorch v1.7.0+cu101 / Colab을 사용했습니다.) (2020/12/12 수정내용) model의 마지막에 log_softmax는 빼야합니다. 아래에서 loss function으로 CrossEntropyLoss를 사용하는데, CrossEntropyLoss내에서 log_.. junstar92.tis.. 2020. 12. 2.