Pytorch tutorial(5)
-
Pytorch tutorials - Transfer Learning
Transfer Learning 이번 튜토리얼에서는 ResNet18을 활용한 Transfer Learning 예제를 다뤘습니다. 우선 튜토리얼 코드를 보기전에 Transfer Learning에 대해 간단하게 정리하고 넘어 가보겠습니다. 실제로 ConvNet를 학습시킬 수 있는 충분히 큰 데이터셋을 구하기 어렵기 때문에 사용 가능한 크기가 매우 큰 데이터셋(ex. ImageNet)을 이용해 학습 시킵니다. 학습 시킨 이후 Transfer Learning은 크게 3가지 방식으로 나뉩니다. ConvNet as fixed feature extractor : 이 방식에서는 다른 데이터셋을 이용해 pret-rained 된 ConvNet을 이용하되 마지막 아웃풋을 출력하는 fully-connected layer만 변..
2021.03.26 -
Pytorch tutorials - What is torch.nn really?
What is torch.nn really? 이번 튜토리얼은 mnist 데이터셋에 대해 pytorch에서 제공하는 다양한 기능들을 이용하지 않고 은닉층이 없는 단순한 신경망을 정의해본 뒤에 torch.nn, torch.optim, Dataset, DataLoader등을 활용해서 코드를 리팩토링(refactoring) 해보는 과정입니다. Tutorial 코드 MNIST data setup 고전적인 손글씨 숫자(0 ~ 9) 데이터인 MNIST 데이터셋을 활용하여 실습을 진행합니다. 튜토리얼 코드가 작동을 하지 않아서 다음 링크(https://github.com/mnielsen/rmnist/blob/master/data/mnist.pkl.gz)를 통해 mnist 데이터셋을 다운 받은 후 다음 colab fil..
2021.03.26 -
Pytorch tutorials - Training a Classifier
Training a Classifier 분류기를 학습하기 전에 우선 데이터를 불러와야 합니다. 일반적으로 PyTorch는 torch.utils.data.Dataset으로 Custom Dataset을 생성하고, torch.utils.data.DataLoader를 이용해 데이터를 불러옵니다. PyTorch TORCH.UTILS.DATA 공식 문서를 보니 torch의 dataset은 다음과 같은 2가지 스타일이 있습니다. Map-style dataset __getitem__()과 __len__()을 구현해야 함 index가 존재하여 data[index]로 데이터를 참조할 수 있음 Iterable-style dataset __iter__()을 구현해야 함 random으로 읽기에 어렵거나, data에 따라 bat..
2021.03.26 -
Pytorch tutorials - Autograd
Autograd autograd 패키지는 Tensor의 모든 연산에 대해 자동 미분을 제공하며 define-by-run 프레임워크 입니다. 파이토치와 같은 define-by-run은 계산 그래프가 생성됨과 동시에 결과를 얻는 방식인 반면 텐서플로우와 같은 define-and-run은 계산 그래프를 먼저 생성한 후에 결과를 계산하여 얻는 방식입니다. Tensor Tensor의 .requires_grad속성을 True로 설정(deafault는 False)하면 그 tensor 에서 이뤄진 모든 연산을 추적한 후 .backward()를 이용해서 모든 gradient를 자동으로 계산이 가능합니다. 만약 Tensor가 기록을 추적하는 것을 중단하게 하고 싶으면 .detach()를 이용하여 연산 기록으로 부터 분리하..
2021.03.26 -
Pytorch tutorials- Tensors
Tensor Tensor는 NumPy의 ndarray와 유사하며, GPU를 사용한 연산 가속도 가능합니다. 튜토리얼 초반부에 여러 Tensor의 자료형들이 나와서 이를 표로 나타냈습니다. 메모리의 여유에 따라 데이터 자체의 유효 숫자를 선택하면 됩니다. 특별한 설명이 없으면 default는 torch.FloatTensor 입니다. 밑의 코드들은 Tensor들을 생성한 예시입니다. x1 = torch.empty(5, 3) # 초기화되지 않은 행렬 생성 x2 = torch.rand(5, 3) # 무작위로 초기화된 행렬 생성 x3 = torch.zeros(5, 3, dtype=torch.long) # 0으로 채워진 행렬을 생성 x4 = torch.tensor([5.5, 3]) # 데이터로부터 직접 행렬 생성 ..
2021.03.26