반응형

Python/Pytorch 29

[Pytorch] 텐서를 넘파이 배열, 리스트로 변환하는 방법 정리

파이토치 tensor를 numpy array나 list로 바꾸기 파이썬 파이토치에서 tensor 자료형을 넘파이 배열 또는 리스트 자료형으로 변환하는 방법에 대하여 케이스별로 정리해보도록 하겠습니다. 1. 기본 텐서의 경우 : numpy() / tolist() 먼저, grad 정보가 없고 gpu에 선언되지 않은 가장 기본적인 텐서의 경우입니다. 아래와 같은 예시의 tensor를 형변환해보도록 하겠습니다. data1 = torch.randn(3, 2) data1 # 출력 결과 tensor([[-0.2370, -1.4314], [-0.7539, 0.5552], [-1.1405, -0.4047]]) 넘파이 배열 자료형으로 바꾸려면 tensor.numpy() 형태로 지정해주시면 됩니다. data1.numpy()..

Python/Pytorch 2022.08.12

[Pytorch] 파이토치 허브(torch.hub) 사용법

파이토치 허브 메소드 정리, 사용 예제 Pytorch에서 github repository 등의 위치에 구현되어 있는 ResNet 등의 pre-train된 모델을 쉽게 불러올 수 있는 hub 기능에 대하여 구현된 함수들의 종류를 살펴보고 간단한 사용 예제들에 대하여 다루어 보겠습니다. torch.hub의 더 상세한 사용법이 궁금하시다면 아래 링크의 공식 사이트를 참고해주세요. (해당 포스팅도 해당 공식 글의 내용을 참조하여 작성되었습니다.) torch.hub — PyTorch 1.12 documentation torch.hub Pytorch Hub is a pre-trained model repository designed to facilitate research reproducibility. Publis..

Python/Pytorch 2022.07.28

[Pytorch] 파이썬 Contrastive Learning 구현 예제(feat. SimCLR)

Python 파이토치 SimCLR Contrastive Learning 실습 이번 글에서는 파이썬에서 파이토치 모듈을 활용하여 SimCLR 논문의 Contrastive Learning 사례를 간략한 버전으로 구현해보도록 하겠습니다. 이번 사례에서는 설명 간략화를 위하여 비교적 간단한 MNIST 데이터셋을 사용해 보았으며, 모델로는 아주 단순한 CNN 구조를 가정하고 기법을 구현해 보았습니다. 또한, data augmentation은 cutout 이후 회전을 수행하는 1가지 방법에 대해서만 학습을 진행해보는 예제로 글을 구성하였습니다. Step 1 : 데이터셋 불러오기 MNIST 데이터셋을 불러올 수 있는 방법은 torchvision 모듈을 활용할 수도 있지만 여기서는 사이킷런을 이용하여 데이터를 불러오고..

Python/Pytorch 2022.07.20

[Pytorch] 체크포인트(checkpoint) 설명, 저장 및 불러오기 예제(epoch별, step별, best)

파이썬 파이토치 체크포인트 사용법 python torch 모듈에서 학습된 모델의 저장 및 불러오기 과정에서 자주 보이는 체크포인트(checkpoint) 개념에 대하여 정리해보고 epoch별, step별, best 등의 체크포인트를 직접 지정하여 저장 및 불러오기를 해보는 예시를 다루어보겠습니다. 파이토치에서 체크포인트란? 파이토치의 checkpoint는 학습 중인 모델의 특정 시점의 상태를 보존하여 저장했다가 그대로 불러와 이어서 학습하거나 혹은 evaluation을 수행할 수 있게 해주는 파일을 의미합니다. 사실, 체크포인트라는 말은 따로 용어가 있다고 하기보다는 아래 글의 모델의 저장 및 불러오기 과정과 거의 일치한다고 보셔도 됩니다. [Pytorch] 파이토치 모델 저장, 불러오기 방법 torch ..

Python/Pytorch 2022.07.18

[Pytorch] 파이썬 파이토치 데이터 병렬 처리 적용 예제 : nn.DataParallel

Python torch data parallelism 사용법 파이토치에서 데이터 병렬 처리를 적용하는 방법에 대한 예제를 살펴보도록 하겠습니다. 해당 글은 아래 링크의 파이토치 공식 사이트의 글을 기반으로 작성되었으며, 좀 더 자세한 설명이 필요하시다면 해당 글을 참고해주세요. 선택 사항: 데이터 병렬 처리 (Data Parallelism) 글쓴이: Sung Kim and Jenny Kang 번역: ‘정아진 ’ 이 튜토리얼에서는 DataParallel(데이터 병렬) 을 사용하여 여러 GPU를 사용하는 법을 배우겠습니다. PyTorch를 통해 GPU를 사용하는 tutorials.pytorch.kr 상황 가정 우선, 아래와 같이 파라미터 수가 많은 네트워..

Python/Pytorch 2022.07.14

[Pytorch] 모델에 저장된 파라미터 확인, 출력 방법

파이토치에서 파라미터 값 보는법 파이토치에서 모델에 저장된 parameter의 값들을 확인하는 방법들을 살펴보겠습니다. 파라미터만 출력 : model.parameters() 이용 layer 순서대로 파라미터를 출력하려면 선언된 모델의 parameters()를 호출하여 아래와 같이 순회해주시면 됩니다. for param in model.parameters(): print(param) 각 layer에 저장된 weight와 bias 값들이 차례대로 잘 출력되는 것을 볼 수 있었습니다. layer 이름과 같이 출력 : model.named_children() 이용 만일, layer의 이름과 매칭하여 저장된 파라미터를 확인하고 싶은 경우에는 아래와 같이 named_children()을 호출하여 layer 이름과 ..

Python/Pytorch 2022.05.13

[Pytorch] DataLoader의 기능과 사용법 정리

파이썬 파이토치 DataLoader 이해하기 파이토치 모듈에서 모델 학습 과정 시 각 step 마다 데이터를 batch size 크기로 분할하여 넣어 효과적이고 효율적인 학습 진행을 돕는 dataloader의 기능을 이해해보고 사용법 예시 코드를 쉽고 간략하게 정리해보도록 하겠습니다. DataLoader의 기능, 사용 이유 이해를 돕기 위하여 x, y 두 벡터를 input으로 받는 모델을 학습하려는 상황을 가정해보겠습니다. 그리고 아래와 같이 1000개의 데이터가 있다고 생각해보도록 하겠습니다. # 다음과 같은 형태로 데이터가 존재한다고 가정 data = [[x1, y1], [x2, y2], [x3, y3], ... , [x1000, y1000]] 이제 이 데이터를 통하여 모델을 학습하려면 어떤 형태로 ..

Python/Pytorch 2022.05.10

[Pytorch] GPU 여부 확인, 사용할 GPU 번호 지정, 모델 및 텐서에 GPU 할당 방법

파이토치 GPU 체크, 지정 및 할당 방법 정리 파이토치에서 GPU 사용 가능 여부 및 연결된 GPU 정보를 확인해보고 특정 GPU만 사용하도록 설정하는 방법과 모델 및 텐서에 원하는 GPU를 할당할 수 있는 방법에 대하여 정리해보도록 하겠습니다. GPU 사용 가능 여부 확인 아래의 명령어의 결과가 True로 반환되면 GPU가 연결되어 사용 가능하다는 의미입니다. import torch # GPU 사용 가능 -> True, GPU 사용 불가 -> False print(torch.cuda.is_available()) 다음과 같이 코드를 작성하면 GPU 여부에 따라서 사용할 디바이스 종류 자동 지정이 가능합니다. # GPU 사용 가능 -> 가장 빠른 번호 GPU, GPU 사용 불가 -> CPU 자동 지정 예..

Python/Pytorch 2022.04.24

[Pytorch] 파이토치 특정 layer freeze 방법

파이토치 일부 layer의 파라미터만 freeze하기 파이토치에서 학습을 진행할 때, 특정 layer를 freeze하는 방법을 말씀드려보겠습니다. 이해를 돕기 위해 아래와 같은 매우 간단한 신경망이 있다고 가정해보겠습니다. import torch.nn as nn class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(8, 4) self.fc2 = nn.Linear(4, 2) self.fc3 = nn.Linear(2, 1) def forward(self, x): return self.fc3(self.fc2(self.fc1(x))) my_net = Net() 예를 들어, 위의 신경망에서 fc2에 해당하..

Python/Pytorch 2022.04.22

[Pytorch] 파이토치 모델 저장, 불러오기 방법

torch model save, load 예제 이번 글에서는 파이토치에서 학습된 모델을 저장하고, 저장된 모델을 다시 불러오는 방법을 파라미터만 저장하는 방법과 모델 전체를 save하는 방법으로 나누어서 설명해보겠습니다. 참고로, 이 글은 파이토치 공식 문서를 기반으로 작성되었습니다. model save 방법 1 : 파라미터만 저장 state.dict() 메소드를 불러와 모델의 파라미터만 골라서 저장이 가능합니다. 이 방법은 모델의 클래스 종류와 argument를 아는 경우 용량을 절약할 수 있어 권장드립니다. 저장될 파일은 pt 확장자로 지정해주시면 됩니다. # torch.save(모델이 저장된 변수 이름.state_dict(), 모델이 저장될 디렉토리) torch.save(model.state_dic..

Python/Pytorch 2022.03.08
반응형