본문 바로가기

반응형

연구

(58)
[ubuntu 명령어] 내가 보려고 정리하는 linux명령어 : vi a : 현재 커서 바로 다음에 삽입. 현재 라인 가장 마지막에 글 쓰고 싶을 때 i보다 유용. x : 커서가 위치한 곳의 글자 1개 삭제. 단어 삭제할 때 i한 다음 back space로 지우지말고 이걸로 지우는것이 유용함. dd : 커서가 위치한 곳의 한 줄 삭제 yy : 커서가 있는 Line한줄을 복사 p : 버퍼에 복사돼 있는 내용을 현재 커서 바로 아래줄에 붙여넣기 u : ctrl + z. 되돌리기. 계속 되돌리기 가능. $ : 커서를 현재 라인의 가장 뒤로 보낸다. 0(zero) : 커서를 현재 라인의 가장 앞으로 보낸다.
[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..
[이메일] 연구원으로써 해외연구원에게 메일로 연구관련 질문 보낼 때 연구를 하다보면 종종 메일로 논문 내용에 대해서라던지 물어볼게 생길 수 있다. 그러나 영어에 익숙한 사람이 아니라면 자기가 예의바르게 보냈다고 생각해도 영어문화권 입장에서는 예의없게 보일 수 있다. 그렇다 나는 상당히 신경써서 보내봤지만 한번 씹힌적이 있어서 영어 잘하는 친한 후배에게 물어봤더니 살짝 건방지게 물어봤었다는 말을 들었다..ㅜ 이러한 경험에서, 이메일을 보낼 때 기분 나쁘지 않게 잘 보내려는 대학원생들이 나 말고도 있을것이라고 생각하여 메일 보낼 때 참고할 형식을 공유합니다. [질문할 때] Dear, (상대방 이름) Hello, I am a master student studying at (학교) University (랩실 이름) Laboratory in South Korea. I've re..
[GAN] mode collapse는 G와 D가 어떻게 학습될때 발생하는 문제인가? mode collapse는 G가 계속 똑같은 모양의 data를 출력해내는 문제를 말한다. 이 문제는 G가 제대로 학습한게 아니라 D를 속이는데에만 최적화되게 학습된 형태를 말한다. 그렇다면 어떻게 제대로 학습되지도 않았는데 Discriminator를 속일 수 있었을까? 정답은 애초에 D가 global optima로 수렴하지 않았기 때문이다. 어떠한 이유로 D가 local minima에 빠졌거나 학습이 제대로 이루어 지지 않았기 때문에 G의 속임수를 잘 판별하지 못하게 되고 그로 인해 G도 더이상 의미있는 gradient를 뽑아 낼 수 없었기 때문에 학습이 멈춰버린 것이다.
[디버깅] 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..
[디버깅] 아무리 힘들어도 잊지 말아야 할 것 코드가 안돌아가면 사람이 잘못한것이다. 보통 그 코드에 대해 이해도가 부족하기때문에 발생한 에러다. 디버깅은 쪼개기다. 계속 쪼개고 분석하다보면 문제를 알 수 있다. 한번에 파악하려고 스트레스받지말고 버그발생하면 일단 문제발생 범위를 좁히자(쪼개자).
[논문정리] GAN의 목적함수 읽는법 GAN관련 논문들을 읽다보면 항상 나오는 수식이 있다. 다음과 같이 E와 함께 쓰인 식인데 우선 살펴보도록 하자. 논문에서 직접 말하겠지만 참고로 (1)번 수식은 loss function이 아닌 objective function이다. 손실함수와 목적함수는 비슷하지만 분명히 다른데, 손실함수가 목적함수의 특별한 케이스라고 보면 된다. 간단하게 설명하자면 손실함수는 무조건 작을 수록 좋은것이지만 목적함수는 최소화를 목표로 할 수 도있고, 최대화를 목표로 할 수도 있다. 그러나 마찬가지로 목적함수로 학습의 최적화를 위해서 존재하는 함수라는 점에서 loss function과 비슷한 부분이 있다. 다시 논문내용으로 돌아가서 (1)은 loss function이 아니기 때문에 log(D(x,y))와 log(1-D(x..

반응형