전체 글 (181) 썸네일형 리스트형 [디버깅] 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.. [디버깅] 아무리 힘들어도 잊지 말아야 할 것 코드가 안돌아가면 사람이 잘못한것이다. 보통 그 코드에 대해 이해도가 부족하기때문에 발생한 에러다. 디버깅은 쪼개기다. 계속 쪼개고 분석하다보면 문제를 알 수 있다. 한번에 파악하려고 스트레스받지말고 버그발생하면 일단 문제발생 범위를 좁히자(쪼개자). [python] 파이썬 print 출력방식. f-string bluese05.tistory.com/70 [논문정리] GAN의 목적함수 읽는법 GAN관련 논문들을 읽다보면 항상 나오는 수식이 있다. 다음과 같이 E와 함께 쓰인 식인데 우선 살펴보도록 하자. 논문에서 직접 말하겠지만 참고로 (1)번 수식은 loss function이 아닌 objective function이다. 손실함수와 목적함수는 비슷하지만 분명히 다른데, 손실함수가 목적함수의 특별한 케이스라고 보면 된다. 간단하게 설명하자면 손실함수는 무조건 작을 수록 좋은것이지만 목적함수는 최소화를 목표로 할 수 도있고, 최대화를 목표로 할 수도 있다. 그러나 마찬가지로 목적함수로 학습의 최적화를 위해서 존재하는 함수라는 점에서 loss function과 비슷한 부분이 있다. 다시 논문내용으로 돌아가서 (1)은 loss function이 아니기 때문에 log(D(x,y))와 log(1-D(x.. [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 [occluded data] dataset에 occlusion 취하는법 논문을 구현하려다 보면 dataset이 간혹 이런 내용이 나온다. 데이터셋 자체에서 occlude가 취해져 있는 것도 있으나 이 논문에서는 training을 위해 직접 데이터에 occlusion작업을 해주었다. 처음 봤을 때 어떻게 occlusion을 취했는지 의문이 들었다. 그냥 임의의 patch모양으로 pixel에 0을 취해서 까만 사각형을 만들어버리면 되나?? 그런식의 occlusion도 있겠지만 적절한 방법은 아니라고 교수님께서 말씀하셨다. 대신 적절한 방법은 이미지에 직접 다른 segmentation된 이미지를 추가하거나 아래 github처럼 프로그램을 사용하여 segmentation된 이미지를 추가하게끔 하는 것이다. github.com/isarandi/synthetic-occlusion [딥러닝 개념] input image를 normalize해서 넣는 이유 normalize한다는게 무슨 말일까? 논문을 보다보니 이런 내용이 있었다. batch normalization으로 feature map들을 정규화한다는 말은 들었는데 input image부터 정규화한다는 말은 처음 들었다. 그런데 간단하게 생각해서 둘다 비슷한 말이라고 생각하면 된다. 그렇다면 image를 정규화하는 이유는 뭘까? 당연히 성능이 더 좋게 나왔으니까... 일반적으로 image의 각 pixel값들은 0~255의 값을 가지는데 이를 가장 간단하게는 그냥 255로 나누어서 0~1의 값을 가지도록 하는 경우도 있고, 위의 논문일부처럼 mean, variance를 가지고 정규화하는 경우도 있다. batch normalization에서나 input image normalization에서나 이유는 같.. 이전 1 ··· 6 7 8 9 10 11 12 ··· 23 다음