본문 바로가기

반응형

연구/pytorch

(24)
[error] 파이썬 data loader 시간지연문제 파이썬 data loader 시간지연문제는 사실 data loader안에서 생기는 문제가 아니고 파이썬 threading 문제다. File "test_dataloader.py", line 39, in _debug_h36m() File "/home/kwu/Desktop/chun/code/METRO_REAL/main/../data/Human36M/Human36M.py", line 464, in _debug for i, (inputs, targets, meta_info) in enumerate(train_loader): File "/home/kwu/anaconda3/envs/metro_real/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line..
[error] RuntimeError: CUDA error: no kernel image is available for execution on the device 결론부터 말하면 GPU와 PC환경설정간 호환이 안된다는 뜻이다. 해결 방법은 아래에 흐름대로 적어놓도록 하겠다. 제목과 같은 에러메세지가 떴다. 지금 상황은 RTX3090으로 바꾸고 nvidia-driver, cuda, cudnn, anaconda, pytorch 설치 후 처음으로 러닝을 돌리는데 위와 같은 에러가 뜬 상황이다. 그 중 의도를 알 수 있는 메세지를 스샷했다. 대충 보니 파이토치 버전이 맞지 않는다는 의미인것 같았다. 일단 내 실험환경은 다음과 같다. NVIDIA-DRIVER : 460.39 CUDA : 11.2 CUDNN : 8.1.1 pytorch : 1.8.0 근데 의문인 것은 연구실 다른 분들 중에 CUDA 11.2, CUDNN 8.1.1 로 학습중인 분도 계셨고 NVIDIA-DRI..
[디버깅] pytorch 디버깅 함수 import pdb; pdb.set_trace() 위 명령어로 실행중인 코드를 잠깐 멈출 수 있다. 이 상태에서 c를 하면 다음 저 명령어가 있을 때 까지 실행, q를 누르면 코드실행 종료를 한다.
[Error] pytorch 연산중 nan이 뜨는 원인 이 포스트에서는 Pytorch library에서 forward() 중에 NaN이 뜨는 경우와 loss.backward()를 하고나면 NaN이 발생하는 경우를 다룹니다. Forward propagation 중에 NaN발생 nan은 Not a number의 준말이다. nan이 뜨는 이유는 많이 있겠지만 다차원텐서 연산중에 날 수 있는 가장 많은 케이스는 바로 0으로 나누는 것이다. A_norm = torch.unsqueeze(torch.norm(A_vec, dim=2), 2) affinity_graph.append(torch.div(torch.div(num, A_norm).transpose(1, 2), A_norm).transpose(1,2) 나 같은 경우에 분석을 거치고 거치다 결국 위와 같은 코드에서 n..
[pytorch] register_buffer 란? register_buffer 로 layer를 등록하면 어떤 특징이 있는가? 1. optimizer가 업데이트하지 않는다. 2. 그러나 값은 존재한다(하나의 layer로써 작용한다고 보면 된다.) 3. state_dict()로 확인이 가능하다. 4. GPU연산이 가능하다. 따라서 네트워크를 구성함에 있어서 네트워크를 end2end로 학습시키고 싶은데 중간에 업데이트를 하지않는 일반 layer를 넣고 싶을 때 사용할 수 있다. 참고 사이트 : discuss.pytorch.org/t/what-is-the-difference-between-register-buffer-and-register-parameter-of-nn-module/32723/6
[Error] IndexError: invalid index of a 0-dim tensor. Use `tensor.item()` in Python or `tensor.item<T>()` in C++ to convert a 0-dim tensor to a number IndexError로 다음과 같은 에러가 발생했다. 깃허브에 있는 예전 코드를 가져올 때 발생할 수 있는 에러인데 pyTorch의 버전이 0.5 보다 크면 발생할 수 있다고 한다. 이 에러는 단순히 0 차원 텐서가 유효하지 않기 때문에 발생하는 에러다. data[0] --> data 로 바꿔주면 해결된다. 주석처럼 돼있는걸 주석 아래줄로 바꾸면 된다. 참고 사이트 : github.com/NVIDIA/flownet2-pytorch/issues/113
[연구 기록] FAN코드와 내 코드를 비교하며 알게된 점 FAN코드는 Bulat의 How far are we from solving the 2D & 3D Face Alignment problem? 논문의 코드이다. 이 논문은 2D,3D face alignment에서 유명한 논문이며 이 논문의 코드와 내 코드의 비교는 의미있다고 할 수 있다. 아래에서 개인적으로 가장 중요하다고 생각하는건 학습 option 설정, Randomness통제, 각 option에 따른 기능 구현이다. 비교사항 논문 코드 내 코드 log 기록 객체화시켜서 각 기능을 구현했다. 구체적이다. learning rate, train cost, train error, val cost, val error를 epoch 마다 기록했다(loss나 성능관련된건 train, test 할 것 없이 다 기록한 ..
[data loader] 데이터 불러올때 경로설정(dir path) 및 데이터폴더 정리 pytorch로 연구할 때, data loader부분소스코드를 짜는것과 데이터준비하는것만 해도 절반은 했다는 말이 있다. 그 만큼 data를 잘 불러와서 처리하는게 중요하고 어렵다는 말인데 나중에 겪을 시행착오를 위해 미리미리 쉬운 케이스부터 기록해놓겠다. 아래는 Bulat의 "How far are we from solving the 2d and 3d face alignment problem" 논문에서 제공하는 코드를 실행하는 부분 중에서도 데이터를 가져오는 파일의 코드이다. class facedb는 data를 load하는 기능의 클래스이다. 이 글에서 더 이상 자세하게 볼 필요는 없다. 오픈소스코드에서는 저렇게(위 사진처럼) 경로지정하는 부분까지 제공해주는데 이 때, 경로를 어떻게 지정해주어야 하며 다..

반응형