본문 바로가기

반응형

연구

(58)
[Error 기록] RuntimeError: CUDA out of memory. Tried to allocate 2.39 GiB (GPU 0; 10.92 GiB total capacity; 4.87 GiB already allocated; 2.05 GiB free; 7.54 GiB reserved in total by PyTorch) 원인 : GPU가 한번에 감당하는 연산이 너무 많아서? 인것같다 해결책(from stack overflow) : batch사이즈를 줄이면 해결이 된다고 한다. 특히 나는 eval_net에서 문제가 생긴다. eval에서 마지막에 한번에 ypreds를 다루는 부분에서 문제가 생기는데, 이 부분은 batch단위로 데이터를 다루는게 아니라 test데이터를 모두 한꺼번에 처리하는데 이 때 GPU가 감당할 수 있는 양을 넘은 것으로 보인다. 위 코드의 ypreds부분에 에러가 생긴다. ypreds.append(y_preds)로 데이터를 모아둔 후 torch.cat으로 한번에 처리하기엔 GPU가 감당할 수 있는 데이터용량을 넘긴것 같다.
[transfer learning] 전이학습할 때 신경 쓸 부분 전이학습할 때 신경쓸 부분은 파라미터 업데이트할 부분과 업데이트하지 않을 부분을 지정하는 것이다. 신경써줄 부분은 크게 두 부분이다. 1. Network 설계할 때 2. 학습할 때 1. network 설계할 때 : 아래는 ResNet에서 FC만 파라미터 업데이트를 원할 때의 소스코드이다. net = models.resnet18(pretrained=True) # 모든 파라미터를 미분대상에서 제외 for p in net.parameters(): p.requires_grad = False fc_input_dim = net.fc.in_features net.fc = nn.Linear(fc_input_dim,2) 2. 학습할 때 아래 코드에서는 fc만 업데이트를 원하기 때문에 아래처럼 optimizer를 통해서 ..
[Error 기록] RuntimeError: Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be the same h = net(xx) 에서 에러가 났었다. 에러내용은 글의 제목과 같다. xx의 타입과 net의 weight타입이 다르다는건데 한참 헤매다가 코드실수라는걸 알았다. xx=xx.to(device) yy=yy.to(device) 처럼 써서 xx,yy를 GPU를 사용하게끔했어야 하는데 위의 사진처럼 써버려서 input은 cpu, network는 gpu를 쓰라고 명령했던 것이다.
[개념] SGD간단 개념 정리 SGD는 Stochastic Gradient Descent의 준말로 batch gradient descent와 대비되는 개념이다. Stochastic Gradient Descent : 전체 data를 가지고 한번의 loss function을 계산하는게 아니라 batch단위로 loss function을 계산. 장점 : 1. 이로인해 loss function을 여러번 빨리 계산할 수 있다 2. local minima에 쉽게 빠지지 않는다. 즉, global minima를 찾을 확률이 높다. 반대로 BGD는 한번 loss를 계산할 때 마다 전체 data를 이용하여 계산하기 때문에 계산량이 많고 오래걸린다. Batch Gradient Descent는 이름때문에 SGD와 개념이 헷갈릴 수 있지만 여기서 Batch..
[ubuntu 18.04] NVIDIA graphic driver 설치 repository 추가 sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update 그래픽카드 정보 확인 ubuntu-drivers devices nvidia-driver-450 을 recommended해주었기 때문에 다음 명령어부터는 이렇게 친다.(다른 버전이 나오면 그것에 맞게 명령어를 입력한다.) apt-cache search nvidia | grep nvidia-driver-450 sudo apt-get install nvidia-driver-418 설치가 완료되면 sudo reboot 참고한 블로그 : codechacha.com/ko/install-nvidia-driver-ubuntu/ 우분투 18.04 - NVIDIA 드라이버를 설치하는..
[ubuntu 18.04] 처음 설치 후 해야할 것 1. 한글설치 구글 검색해서 하라는 대로 한글 설치하고나서도 한글이 안써지는 경우가 있다. 그럴 때 화면 오른쪽 상단에 작은 역삼각형을 누른다. ==> Hangul mode ==> on 하면 이 때 부터 한글이 써진다. 참고블로그 : webnautes.tistory.com/1199 Ubuntu 20.04 / 18.04 설치 완료 후 한글 설정하는 방법 Ubuntu 20.04 / 18.04 설치 후 한글 입력을 설정해주는 방법을 설명합니다. 2018. 7. 4 최초 작성 2019. 8. 20 2020. 7. 11 Ubuntu 20.04에서 동작 확인 1. 오른쪽 아래에 보이는 프로그램 표시 아이콘을 클릭합니.. webnautes.tistory.com greedywyatt.tistory.com/105 [Ub..
[논문 정리] Pose Machines: Articulated Pose Estimation via Inference Machines 이전까지는 graphical models에 근간하여 사람의 pose estimator를 만들었으나 카네기멜론에서 제안하는 새로운 방식은 이전의 방식에서 벗어나 새로운 method를 제안한다. Introduction 사람 관절 추정의 어려움, 기존 모델 설명, 이 논문에서 사용하는 모델의 특징 간단 소개 사람의 관절 추정이 어려운 가장 큰 두가지 이유는 다음과 같다. 사람 관절의 자유도가 높다. 거의 20자유도 가까이 된다. 이미지에 찍힌 사람에 대한 변수가 많다.(사람의 자세, 이미지의 상태 등) 기존의 graphical model의 단점은 간단히 말하자면 데이터의 complexity와 tractability of inference의 관계가 trade off 관계라는 것이다. 사람이 다양한 자세를 취하더..
[CPM 논문 정리] Convolutional Pose Machines abstract 요약 belief map, 즉 confidence map에 동작시키는 convolutional networks를 기존의 구조(pose machine)에서 추가하였고, 이로 인해 각 part 좌표를 탐지하는 성능이 좋아졌다고 한다. 또한 기울기 소멸 문제에 대해 설명하는데 중간 지도자의 역할을 하는 natural learning objective function을 제공함으로 써 기울기 소멸문제를 해결했는데 이에 대한 설명이 주를 이룰 것으로 보인다. 정리하기 전에 일단 이해한 내용들 적어놓기 1. 찾기 쉬운 영역을 찾고 그 part가 제공하는 spatial context으로 인해서 찾기 어려운 part를 쉽게 찾을 수 있게된다. 예) 목, 어깨, 머리를 찾으면 ==> 오른쪽 팔꿈치를 찾기 ..

반응형