본문 바로가기

AI/PyTorch

(36)
[PyTorch] DataLoader num_workers PyTorch num_workers에 관하여 PyTorch에서의 데이터의 흐름과 적절한 num_workers값을 지정하는 방법 velog.io num_workers = 4 * num_GPU (or 8, 16, 2 * num_GPU) entry * batch_size * num_worker = num_GPU * GPU_throughtput num_workers = batch_size / num_GPU num_workers = batch_size / num_CPU GPU에서 모델을 학습하는 속도와 CPU에서 DataLoader가 데이터를 준비해주는 속도는 다르다. 보통 CPU에서 수행되는 속도가 더 느리기 때문에 DataLoader는 멀티프로세싱을 통해 더 빠르게 GPU에 데이터를 조달한다. 이 때 사용할 ..
[PyTorch] torch.load error (feat. ModuleNotFoundError: No module named 'models') [error] torch.load error (feat. ModuleNotFoundError: No module named 'models') 상황 직접 만든 모델을 학습 후 torch.save(model, path) 로 저장한 후 torch.load(weight) 을 하는 도중 다음과 같은 에러가 발생하였다. ModuleNotFoundError: No module named 'models' 원인 라이브러리를 통해 model을 학 biology-statistics-programming.tistory.com 상황 직접 만든 모델을 학습 후 torch.save(model, path) 로 저장한 후 torch.loa..
[Pytorch] 텐서 쌓기 함수 torch.cat(), torch.stack() 비교 [Pytorch] 텐서 쌓기 함수 torch.cat(), torch.stack() 비교 torch cat vs stack 함수 차이 이번 글에서는 파이토치에서 텐서를 쌓는 경우 사용하게 되는 cat과 stack 함수의 차이와 사용 방법에 대해서 살펴보도록 하겠습니다. 먼저, 다음과 같이 간단한 (2, 3) shape jimmy-ai.tistory.com 이번 글에서는 파이토치에서 텐서를 쌓는 경우 사용하게 되는 cat과 stack 함수의 차이와 사용 방법에 대해서 살펴보도록 하겠습니다. 먼저, 다음과 같이 간단한 (2, 3) shape의 2차원 텐서 2개를 선언하겠습니다. import torch # (2, 3) 사이즈 2차원 텐서 2개 생성 a = torch.tensor([[1, 2, 3], [4, 5,..
[PyTorch] torch.nn.CrossEntropyLoss() cls_loss = nn.CrossEntropyLoss() test_pred_y = torch.Tensor([[2,0.1,0.3],[0,1,0.3]]) # 실제 사용에선 softmax에 의해 각 행의 합이 1이 될 것이다. test_true_y1 = torch.Tensor([1,0]).long() # 1은 true값이 1번째(클래스)라는 것을 의미 test_true_y2 = torch.Tensor([0,1]).long() print(test_pred_y.shape) print(test_pred_y) print(test_true_y1) print(test_true_y2) print(cls_loss(test_pred_y, test_true_y1)) print(cls_loss(test_pred_y, test_..
[PyTorch] torchvision.dataset.CoCoDetection dataLoader를 만들어서 train함수에 넣어주어야 하는데 이 때 dataLoader를 만들려면 class로 데이터셋에 대한 정의가 있어야 한다. !git clone https://github.com/pdollar/coco/ %cd coco/PythonAPI/ !make !python setup.py install %cd ../.. !rm -r coco !sudo apt-get update !sudo apt-get install aria2 !aria2c -x 10 -j 10 http://images.cocodataset.org/zips/train2017.zip !aria2c -x 10 -j 10 http://images.cocodataset.org/zips/val2017.zip !aria2c -x ..
[PyTorch] model의 parameter 접근하기 nn.Linear()등으로 정의한 파라미터 접근은 parameter(), named_parameters()으로 가능하다. 정확히는 layer가 모두 nn.Module()을 상속받으므로 Module에 정의되어 있는 parameter 접근 방법을 사용하면 된다. 1. torch.nn.Module.parameters() parameter()는 layer 이름을 제외한 parameter값에 대한 iterator를 준다. layer = torch.nn.Linear(10,3) layer >> Linear(in_features=10, out_features=3, bias=True) for p in layer.parameters(): print(p) >> Parameter containing: tensor([[-0.2..
[PyTorch] 버전 변경하기 v1.7.1 Conda OSX # conda conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 -c pytorch Linux and Windows # CUDA 9.2 conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=9.2 -c pytorch # CUDA 10.1 conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.1 -c pytorch # CUDA 10.2 conda install pytorch==1.7.1 torchvision==0.8.2 torchaud..
[PyTorch] 모델 앙상블(ensemble) 하기 GitHub - taewanme/DL_With_PyTorch Contribute to taewanme/DL_With_PyTorch development by creating an account on GitHub. github.com ↑emsemble 코드 모델 앙상블(ensemble) 하기 학습이 잘된 몇가지 모델이 있고, 각각의 모델의 성능을 결합하여 최선의 결과를 얻고 싶을 때 모델 앙상블을 이용한다. 예시) 잘 학습된 가중치를 포함한 모델 1~3이 있다고 하자. 모델을 통해 dhpark1212.tistory.com
[PyTorch] numpy.mean() Python Numpy.mean() - 산술 평균 numpy.mean() 함수는 지정된 축을 따라 배열의 산술 평균을 계산합니다. www.delftstack.com
[PyTorch] torch.tensor.sum(), torch.tensor.mean(), torch.tensor.max() dim 은 해당 dim을 모두 합친다. 하나의 그룹이라 생각하고 계산한다.
[PyTorch] CNN 설계 11. Transfer Learning 1. Package load 2. 데이터셋 다운로드 및 훈련, 검증, 테스트 데이터셋 구성 3. 하이퍼파라미터 세팅 4. Dataset 및 DataLoader 할당 5. 네트워크 설계 6. train, validation, test 함수 정의 7. 모델 저장 함수 정의 8. 모델 생성 및 Loss function, Optimizer 정의 9. Training 10. 저장된 모델 불러오기 및 test 11. Transfer Learning new_model = torchvision.models.resnet50(pretrained=True) 다만 우리가 앞서 직접 정의한 모델(SimpleCNN)에서는 입력 이미지의 크기를 120x120로 한 것에 반해, 방금 불러온 ResNet은 입력 이미지 크기를 최소한 ..
[PyTorch] CNN 설계 10.저장된 모델 불러오기 및 test 1. Package load 2. 데이터셋 다운로드 및 훈련, 검증, 테스트 데이터셋 구성 3. 하이퍼파라미터 세팅 4. Dataset 및 DataLoader 할당 5. 네트워크 설계 6. train, validation, test 함수 정의 7. 모델 저장 함수 정의 8. 모델 생성 및 Loss function, Optimizer 정의 9. Training 10. 저장된 모델 불러오기 및 test 11. Transfer Learning 10. 저장된 모델 불러오기 및 test 학습한 모델의 성능을 테스트합니다. 저장한 모델 파일을 torch.load를 통해 불러옵니다. 이렇게 불러오면 우리가 얻게 되는 건 아까 저장한 check_point 딕셔너리입니다. 딕셔너리에 저장한 모델의 파라미터는 'net' ..
[PyTorch] torch.save(model.state_dict(), PATH) / torch.load(PATH) 모델 저장하기 & 불러오기 — PyTorch Tutorials 1.9.0+cu102 documentation Note Click here to download the full example code 모델 저장하기 & 불러오기 Author: Matthew Inkawhich 번역: 박정환 이 문서에서는 PyTorch 모델을 저장하고 불러오는 다양한 방법을 제공합니다. 이 문서 전체를 다 tutorials.pytorch.kr 목차: state_dict가 무엇인가요? 추론(inference)를 위해 모델 저장하기 & 불러오기 일반 체크포인트(checkpoint) 저장하기 & 불러오기 여러개(multiple)의 모델을 하나의 파일에 저장하기 다른 모델의 매개변수를 사용하여 빠르게 모델 시작하기(warmstart)..
[PyTorch] torch.tensor와 torch tensor를 float()로 만든다. torch.mean(input) input.mean() 두 가지 방법이 있다. torch.tensor는 객체 자체를 계산시키는 방법이다. torch.mean은 함수로 인자값을 넣어 계산한다. https://frieden1946.tistory.com/556?category=952749 에서 나온 torch.nn 과 torch.nn.functional 차이점과 동일하다고 할 수 있다.
[PyTorch] torch.tensor.float(), torch.mean() torch.float() _, argmax = torch.max(outputs, 1) accuracy = (labels == argmax).float().mean() torch.tensor.float()는 인자값을 넣지 않고 실행시킨다. TORCH.TENSOR.FLOAT Tensor.float(memory_format=torch.preserve_format) → Tensor self.float() is equivalent to self.to(torch.float32). See to(). Parameters memory_format (torch.memory_format, optional) – the desired memory format of returned Tensor. Default: torch.pre..
[PyTorch] torch.max(outputs, 1) _, argmax = torch.max(outputs, 1) Parameters input ( Tensor ) – 입력 텐서. dim (int) – the dimension to reduce. keepdim ( bool ) – 출력 텐서가 dim 유지 되었는지 여부 . 기본값 : False . 리턴 namedtuple (values, indices) values 의 각 행의 최대 값 input 주어진 차원에서 텐서 dim . 그리고 indices 는 발견 된 각 최대 값 (argmax)의 인덱스 위치입니다. 첫번째는 최대값을 tensor로 두번째는 index값을 tensor로 리턴한다. torch.max / dim 역할 torch.max(input, dim, keepdim=False, *, out=Non..
[PyTorch] Conv1d, Conv2d 차이점 Convolution(합성곱)의 연산의 일부로 tensorflow에서는 Conv1D, Conv2D, Conv3D가 사용된다. 그리고 Conv1D, Conv2D, Conv3D 이렇게 나눠지는 기준은 바로 합성곱이 진행되는 방향과 합성곱의 결과로 나오는 출력값이다. 합성곱의 방향 출력값 Conv1D 한 방향(가로) 1-D Array(vector) Conv2D 두 방향(가로, 세로) 2-D Array(matrix) Conv3D 세 방향(가로, 세로, 높이) 3-D Array(tensor) 사실 위 표의 출력값은 합성공의 출력 값과 동일하지 않다. 왜냐하면 배치 크기와 합성곱이 적용되는 필터의 개수를 고려하면 다르게 표현 될 것이다. 위의 경우는 배치를 고려하지 않고 합성곱 필터를 하나만 적용했을 떄라고 생각하..
[PyTorch] CNN 설계 7 - 9 1. Package load 2. 데이터셋 다운로드 및 훈련, 검증, 테스트 데이터셋 구성 3. 하이퍼파라미터 세팅 4. Dataset 및 DataLoader 할당 5. 네트워크 설계 6. train, validation, test 함수 정의 7. 모델 저장 함수 정의 8. 모델 생성 및 Loss function, Optimizer 정의 9. Training 10. 저장된 모델 불러오기 및 test 11. Transfer Learning 7. 모델 저장 함수 정의 모델 저장은 torch.save 함수를 통해 할 수 있습니다. nn.Module.state_dict를 통해 Module, 즉 우리 모델의 파라미터를 가져올 수 있습니다. 이렇게 불러온 파라미터를 check_point 딕셔너리에 저장합니다. 그리..
[PyTorch] CNN 설계 6. train, validation, test 함수 정의 1. Package load 2. 데이터셋 다운로드 및 훈련, 검증, 테스트 데이터셋 구성 3. 하이퍼파라미터 세팅 4. Dataset 및 DataLoader 할당 5. 네트워크 설계 6. train, validation, test 함수 정의 7. 모델 저장 함수 정의 8. 모델 생성 및 Loss function, Optimizer 정의 9. Training 10. 저장된 모델 불러오기 및 test 11. Transfer Learning import torch.optim as optim # Optimizer를 생성합니다. optimizer = optim.SGD(net.parameters(), lr=0.01) # 학습 과정(training loop)은 다음과 같습니다: optimizer.zero_grad(..
[PyTorch] CNN 설계 5. 네트워크 설계 1. Package load 2. 데이터셋 다운로드 및 훈련, 검증, 테스트 데이터셋 구성 3. 하이퍼파라미터 세팅 4. Dataset 및 DataLoader 할당 5. 네트워크 설계 6. train, validation, test 함수 정의 7. 모델 저장 함수 정의 8. 모델 생성 및 Loss function, Optimizer 정의 9. Training 10. 저장된 모델 불러오기 및 test 11. Transfer Learning 모델을 만드는 클래스를 정의한다. 이때 nn.Module을 상속한다. init으로 sequential layer를 만들어준다. init으로 만든 layer를 forward에서 바로 이어서 진행하게 된다. 5. 네트워크 설계 class SimpleCNN(nn.Module)..
[PyTorch] CNN 설계 4. Dataset 및 DataLoader 할당 1. Package load 2. 데이터셋 다운로드 및 훈련, 검증, 테스트 데이터셋 구성 3. 하이퍼파라미터 세팅 4. Dataset 및 DataLoader 할당 5. 네트워크 설계 6. train, validation, test 함수 정의 7. 모델 저장 함수 정의 8. 모델 생성 및 Loss function, Optimizer 정의 9. Training 10. 저장된 모델 불러오기 및 test 11. Transfer Learning 전체 흐름 DataLoader에서 기존에 MNIST와 같이 주어진 데이터셋이 아닌 경우 내가 class를 만들어서 사용해야 한다. 이렇게 만들어진 class를 이용해 DataLoader의 첫 번째 인자인 dataset에 해당 class를 넣어주는 것이다. Dataset ..
[PyTorch] torch.optim의 인자 model.parameters() optimizer 클래스 초기화 제일 중요한 매개변수는 신경망의 파라메터이다. Variable 타입의 파라메터들을 iterable 오브젝트로 넣어줘야한다. 그 외에는 각 optimizer 타입에 따라 learning rate, weight decay 등을 넣어주면 된다. parameters() 메소드는 모듈의 파라메터들을 iterator로 반환한다고 적혀있다. 신경망 구조를 구현할때 보통 아래와 같이 하위 모듈을 추가하는식으로 구현을 하기 때문에, 파라메터를 직접 추가할 일이 거의 없었다. class MyModule(torch.nn.Module): def __init__(self): super(MyModule, self).__init__() self.A = torch.nn.Linear(100, 200) ..
[PyTorch] torch.nn 제공함수 torch.nn Containers Convolution Layers Pooling layers Padding Layers Non-linear Activations (weighted sum, nonlinearity) Non-linear Activations (other) Normalization Layers Recurrent Layers Transformer Layers Linear Layers Dropout Layers Sparse Layers Distance Functions Loss Functions Vision Layers Shuffle Layers DataParallel Layers (multi-GPU, distributed) Utilities Quantized Functions Lazy Mod..
[PyTorch] CNN 설계 순서 1 - 3 1. Package load 2. 데이터셋 다운로드 및 훈련, 검증, 테스트 데이터셋 구성 3. 하이퍼파라미터 세팅 4. Dataset 및 DataLoader 할당 5. 네트워크 설계 6. train, validation, test 함수 정의 7. 모델 저장 함수 정의 8. 모델 생성 및 Loss function, Optimizer 정의 9. Training 10. 저장된 모델 불러오기 및 test 11. Transfer Learning 1. Package load 2. 데이터셋 다운로드 및 훈련, 검증, 테스트 데이터셋 구성 3. 하이퍼파라미터 세팅
[PyTorch] torch.nn 과 torch.nn.functional naming 에서도 알 수 있듯이 torch.nn.functional은 함수고 torch.nn은 클래스로 정의되어 있다. 그렇기 때문에 torch.nn으로 구현한 클래스의 경우에는 attribute를 활용해 state를 저장하고 활용할 수 있고 torch.nn.functional로 구현한 함수의 경우에는 인스턴스화 시킬 필요 없이 사용이 가능하다. torch.nn으로 구현한 클래스의 경우에는 attribute를 활용해 state를 저장하고 활용할 수 있고 torch.nn.functional로 구현한 함수의 경우에는 인스턴스화 시킬 필요 없이 사용이 가능하다. torch.nn은 클래스 객체로 정의하고 이후에 매개변수로 해당 계산을 진행하는 방식 torch.nn.functional은 함수로 그 자리에서 바로..
[PyTorch] nn.MaxPool2d(), nn.BatchNorm2d()
[PyTorch] nn.ReLU(), F.relu() nn.ReLU 와 F.relu는 ReLU를 객체로 선언해서 사용하느냐, 아니면 함수로 사용하느냐의 차이입니다. ReLU는 학습이 필요없기 때문에 개별적인 객체로 선언할 필요없이 함수를 사용해 적용할 수 있습니다. 이러한 내용은 이곳에서도 자세히 설명하고 있으니 참고하시기 바랍니다. class SimpleCNN(nn.Module): def __init__(self): super().__init__() # self.conv 구현 self.conv = nn.Sequential( ## 코드 시작 ## nn.Conv2d(3,32,kernel_size = 3) # conv_1 해당하는 층 nn.BatchNorm2d(32), # batch_norm_1 해당하는 층 nn.ReLU(), # ReLU_1 해당하는 층 nn..
[PyTorch] Intro, 외울 부분 모델을 학습시키기 전에, 어떤 loss를 쓸 것인지 learning rate은 몇으로 할 것인지 optimizer는 무엇으로 할 것인지 학습 횟수는 몇 번으로 할 것인지 PyTorch로 딥러닝하기 — Intro 거창하게 “딥러닝하기”라는 제목을 달았지만, 알다시피 우리에게 딥러닝을 한다는 것은 딥러닝 framework를 잘 사용하기와 같은 의미입니다. medium.com 파이토치로 시작하는 딥러닝 기초 부스트코스 무료 강의 www.boostcourse.org
[PyTorch] Dataset and DataLoader 사용법 Mini-batch 적용하기 위해 사용
[PyTorch] Multivariable Linear Regression 1. 데이터 정의 2. w 초기화 3. optimzer 정의 4. H 계산 5. Cost 계산(MSE) 6. Gradient Descent 파이토치로 시작하는 딥러닝 기초 부스트코스 무료 강의 www.boostcourse.org