본문 바로가기

반응형

전체 글

(176)
[pytorch] model 학습 중 nan이 뜨는 원인2 예전 포스팅 중 model 학습 중 nan 이 뜨는 원인에 대해서 포스팅한 적이 있다. 이는 너무 작은 숫자로 나누는 경우에 발생하는 경우를 다루었었다. [https://powerofsummary.tistory.com/165] 하지만 이번에는 그게 아닌데도 nan이 뜨는 경우를 발견했다. 결론부터 말하면 lr가 너무 크면 nan이 발생할 수 있다고 한다. 나는 어떤 실험을 위해서 lr=0.1 로 설정했었는데, 이게 원인이 된 것 같다. lr: 0.1->0.01 로 줄였더니 nan이 안뜨더라.
[pytorch] Loading pretrained weight 가 제대로 됐는지 확인하는 법 이미 이 블로그에는 pretrained weight 가 제대로 불렸는지 확인하는 예시코드를 올린적 있다. [https://powerofsummary.tistory.com/277] 하지만 기존에 올렸던 포스팅에서는 weights를 그대로 출력해서 그냥 눈으로 숫자들을 하나하나 확인해야만 하는 코드였다. 근데 그것마저도 너무 귀찮아서 그냥 쪼금 더 세련된 코드를 올려서 내가 나중에 다시 써먹으려고 한다. (매우 세련된 코드는 아님;) 2개의 code 를 추가해야하는데, 각각 pretrained weight 를 가져오는 코드의 앞 뒤에 붙여준다. 코드는 아래와 같다. # For checking loaded pretrained weight1 weight_dict = {} for i, (name, param) i..
[torch error] off-the-shelf 모델을 이식했는데 pretrained model 이 잘 동작하지 않을때 off-the-shelf 모델을 내 프로젝트에 이식했는데 돌아가기는 하지만 이식된 모델이 이상한 output 을 내보낼때가 있다. 이 때, 내가 무슨 실수를 한건지를 빠르게 되짚기 위해 디버깅 매뉴얼을 남기고자 한다. 1. 모델이 pretrained weight 를 잘 load 하는지 확인해본다. 2. 이미지가 제대로 load 되고 normalized image 를 입력하고 있는지 확인한다. 그리고 이 normalizing 방법은 off-the-shelf 모델이 학습에서 사용된 방법대로 적용되어야 한다. 3. model.eval() 했는지 확인한다. 4. 사실 모델은 잘 동작했는데 내가 시각화를 잘못한게 아닌지 확인한다. 예를 들어 출력된 mesh를 렌더링해서 확인하는 경우가 있다. 이럴 때 vertex..
[python error] plt.show() 해도 윈도우가 열리지 않는 경우 깃허브에 올라와있는 코드를 다루다가 시각화가 필요한 일이 있어 import matplotlib.pyplot as plt ''' code 주절주절 ''' plt.show() 를 실행했으나 에러가 발생한것도 아니고 그냥 plt 윈도우가 뜨지도 않고 코드가 수행되버리는 일이 발생했다. 결론부터 말하면 실행하면서 지나가는 코드 중 어딘가에 backend 모드를 활성화시키는 코드가 있는 것이다. 나 같은 경우에는 아래의 코드가 문제 원인이었다. import matplotlib matplotlib.use('Agg') 중요한것은 이 코드가 다루고 있는 .py 파일 안에 있지 않고 다른 파일에 있어도 backend 모드가 되어버리는 것이다. 물론 다른 모듈을 import 하는 과정에서 위 코드가 실행되었을 것이다. 어..
[pytorch] Pretrained model의 일부 weights만 가져오기 Pretrained model과 fine-tuning 할 모델의 구조가 다음과 같이 생겼다고 가정한다. 여기서 pretrained model의 backbone weights만 가져와서 학습하고 싶다면 코드를 어떻게 짜야할까? 별로 어렵지는 않지만 매번 새로 짜기 귀찮아서 과거에 내가 짰던 코드를 올려두고 계속 참고하고자 한다. 우선 pretrained model의 checkpoints를 불러와서 어떻게 생겼는지 확인해본다. state_dict = torch.load(args.resume_checkpoint, map_location=cpu_device) print(state_dict.keys())결과화면 (['backbone.0.weight', 'backbone.1.weight&#39..
[mmcv] MMCV, MMDection 설치 종종 Github Project에서 MMCV 관련 라이브러리 설치 방법에 대해 적어놓지 않아서 여기에 기록해둔다. Install mmcv-full pip install -U openmim pip install chardet mim install mmcv-fullInstall MMDectection git clone https://github.com/open-mmlab/mmdetection.git cd mmdetection pip install -r requirements/build.txt pip install -v -e .
[Transformer] torch.nn.MultiheadAttention 모듈의 mask 인자 개념 이 글은 다소 오류가 있을 수 있으니 틀린 내용을 발견하셨다면 언제라도 피드백 환영합니다. nn.MultiheadAttention 의 forward 인자는 다음과 같다. forward(query, key, value, key_padding_mask=None, need_weights=True, attn_mask=None, average_attn_weights=True) 이 중에서 mask 가 2개 있다는 점이 코드 구현중에 헷갈리는 부분이었다. mask는 각각 key_padding_mask, attn_mask 가 있고 이 둘의 차이는 무엇일까? Transformer는 본래 이미지처리 분야가 아닌 자연어처리 분야에서 고안된 모듈이다. 하지만 자연어처리에서 입력은 이미지처럼 입력 사이즈가 고정되지 않고, 문장..
[SMPL Pose] 상대적 회전 표현을 절대적 회전 표현으로 바꾸기 보호되어 있는 글입니다.

반응형