Programming Error/PyTorch
-
[Pytorch 에러] RuntimeError: Error(s) in loading state_dict - size mismatch for conv1.weightProgramming Error/PyTorch 2023. 3. 2. 19:46
Pytorch를 활용하여 Pretrain된 가중치를 기반으로 Transfer Learning을 수행하는 경우가 많이 있을텐데요. torchvision과 같은 라이브러리에서는 Pretrained=True와 같은 인자를 지원하는 경우가 있지만, 연구를 하다보면 개인 연구자들이 올려준 Github로부터 모델 소스와 .pt(h) 확장자로 되어있는 파일을 불러오는 경우가 있을 겁니다. 그럴 때, 일반적으로 아래와 같은 코드로 Initialize를 수행하는데요. state_dict = torch.load(weight_path) model.load_state_dict(state_dict, strict=True) 그런데 해당 가중치를 가져와서 다른 태스크를 수행한다고 하면 일부 레이어(보통 마지막 FC 레이어)를 제거..
-
[MMDetection 에러] RuntimeError: Address already in useProgramming Error/PyTorch 2021. 12. 16. 20:24
RuntimeError: Address already in use Traceback (most recent call last): File "/root/miniconda3/lib/python3.7/runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "/root/miniconda3/lib/python3.7/runpy.py", line 85, in _run_code exec(code, run_globals) File "/root/miniconda3/lib/python3.7/site-packages/torch/distributed/launch.py", line 235, in main() File "/root/miniconda3/lib/p..
-
[Pytorch 에러] RuntimeError: legacy constructor expects device type: cpu but device type: cuda was passed & Input type (torch.cuda.ByteTensor) and weight type (torch.cuda.FloatTensor) should be the sameProgramming Error/PyTorch 2021. 11. 22. 16:18
Pytorch를 Framework으로 사용할 때, 대부분 GPU를 사용하여 학습이나 추론을 수행하실 겁니다. 그러다보면 가끔 아래와 같은 오류를 만날 수 있는데요. RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same 여기서 Input type (torch.cuda.FloatTensor)는 입력(이미지, 텍스트 등)이 현재 GPU(cuda)에 올라가있는 상태이면서 Floating point가 Float32라는 것을 의미합니다. 반면에 weight type (torch.FloatTensor)은 사용하는 모델의 가중치 타입을 의미합니다. 따라서, 현재 모델은 .cuda가 안붙..
-
[PyTorch 에러] Pytorch RuntimeError: stack expects each tensor to be equal sizeProgramming Error/PyTorch 2021. 7. 18. 15:13
PyTorch로 이미지 처리를 하다보면 한 번씩 마주해볼 수 있는 에러인데요. 기존에 쉽게 불러올 수 있는 CIFAR-10 이나 MNIST 같은 데이터가 아닌 개인 데이터들을 사용하다보면 각 이미지마다 Size가 다를 수 있습니다. 그래서 torch의 Dataset, DataLoader를 구현해서 사용하고, Dataset 내에서 torchvision이나 albumentation을 통해 Transforms를 정의해서 Resize, Flip 등의 Augmentation을 하실 텐데요. 이 때, 각 이미지마다 Size가 다른 경우에 동일한 Size로 Resize를 시켜주지 않으면, 위와 같은 오류가 발생하게 됩니다. 이는 Array나 Tensor는 각 차원이 모두 동일해야 Batch 형태로 묶어줄 수 있기 때..
-
[PyTorch DataLoader Num_workers 관련 에러]Programming Error/PyTorch 2021. 7. 13. 23:45
PyTorch의 DataLoader는 학습 데이터를 효율적으로 읽어오기위해 필수적으로 사용됩니다. DataLoader 중에서 num_workers라는 인자가 있는데 이는 데이터 로딩을 하기위해 몇 개의 CPU 프로세스를 사용할 것인지를 의미합니다. GPU에 데이터를 전달해주기 위해 적절한 수의 num_workers를 지정해줄 필요가 있습니다. 여기서는 num_workers 관련 에러에 대한 이슈를 다룰 것이므로 더 자세한 설명은 해당 블로그에서 잘 설명되어 있으니 참고하시면 될 것 같습니다. 우선 제가 num_workers 관련해서 마주한 에러는 다음과 같이 두 가지가 있었습니다. 1. BrokenPipeError: [Errno 32] Broken pipe 2. RuntimeError: DataLoade..
-
[PyTorch Warning] W accumulate_grad.h:170 Warning: grad and param do not obey the gradient layout contract.Programming Error/PyTorch 2021. 7. 13. 16:41
[W accumulate_grad.h:170] Warning: grad and param do not obey the gradient layout contract. This is not an error, but may impair performance. grad.sizes() = [64, 768, 1, 1], strides() = [768, 1, 1, 1] param.sizes() = [64, 768, 1, 1], strides() = [768, 1, 768, 768] (function operator()) PyTorch Framework로 모델을 학습하는 도중에 다음과 같은 Warning을 만났습니다. Error는 아니고 Warning이라 넘어갈까했지만 may impair performance 성능을 ..
-
[PyTorch Cuda 오류] cuda error: device-side assert triggeredProgramming Error/PyTorch 2021. 6. 6. 19:34
cuda error: device-side assert triggered PyTorch 뿐만 아니라 Tensorflow를 사용하다보면 위와 같은 에러를 자주 마주했을거라 생각합니다. 위 오류는 GPU를 사용하다보면 나올 수 있는 가장 추상적인(원인이 매우 많음) 에러입니다. 따라서, 위 에러만 보고서는 어떤 것에 문제가 생기는지 알기가 힘듭니다. 이를 해결하기 위해 우선, 해당 .py 파일 또는 Notebook 가장 위에 아래의 코드를 삽입합니다. import os os.environ['CUDA_LAUNCH_BLOCKING'] = "1" os.environ["CUDA_VISIBLE_DEVICES"] = "0" 그리고, 코드를 실행하면 조금 더 구체화된 에러 메시지가 나오게 됩니다. 제가 겪었던 경우 중 ..