연구 (58) 썸네일형 리스트형 [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.. [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'.. [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] 상대적 회전 표현을 절대적 회전 표현으로 바꾸기 보호되어 있는 글입니다. [좌표계 변환] 좌표계 변환, 좌표 변환 개념 공부 2023.07.12 수정 우선, 좌표계를 변환한다는 것은 좌표축을 변환한다는 것과 같은 말이다. 하지만 좌표계 변환과 좌표(점) 변환은 다른 말이고 서로 반대 변환이다. 이런 개념까지는 알고 있었으나 이 개념을 구현하려다 보니 막상 헷갈리는 개념들이 있어 살짝 기록하려고 한다. 지금까지 world 좌표계상에서 정의된 점을 camera 좌표계상에서 바라보았을때는 좌표가 몇으로 보일까? 를 풀기 위해서 다음의 수식을 이용해왔었다. Xw : 점 X를 World좌표계상에서 바라보았을때의 좌표 Xc : 점 X를 Camera 좌표계상에서 바라보았을때의 좌표 그런데 문제는 그럼 R,t 는 뭐지? R은 world 좌표축을 camera 좌표축으로 회전하는건가? 아니면 camera 좌표축을 world좌표축으로 회전하는 건.. 이전 1 2 3 4 ··· 8 다음