본문 바로가기

기타

(6)
Pytorch GPU device 쓸 때 디버깅 오류 https://stackoverflow.com/questions/51009687/pytorch-unable-to-get-repr-for-class-torch-tensor Pytorch, Unable to get repr for I'm implementing some RL in PyTorch and had to write my own mse_loss function (which I found on Stackoverflow ;) ). The loss function is: def mse_loss(input_, target_): return torch.sum( ... stackoverflow.com ㅋㅋㅋ 무슨 일이 있었냐면, BERT pretrain 코드를 짜는데 line 195에 오류가 있는데 그냥 에러 ..
torch mm, bmm, matmul 차이 위의 세가지 함수들은 모두 사용법이 다르고 사람들마다 자기 편한대로 맞게만 쓰면 되지만, 내가 위의 세가지 함수들을 쓰는 경우는 다음과 같다. 우선, 나는 matmul은 잘 쓰지 않는다. 왜냐면 matmul은 너무 많은 것을 내부적으로 구현해놨고, 이에 따라 내가 헷갈릴 수도 있다. 최대한 explicit하게 코드를 쓰는것을 지향하기 때문에 matmul은 불가피한 경우가 아니면 쓰지 않는다. mm은 matrix multiplication으로, [n, m] x [m,p] = [n,p] 를 구현한다. bmm은 batch matrix multiplication으로, 두 operand가 모두 batch일 때 사용한다. [B, n, m] x [B, m, p] = [B, n, p] matrix가 아니고 벡터는? m..
Tensorboard와 OSError: [Errno 12] Cannot allocate memory 에러 Project를 하면서 여러 변수를 바꿔보고 모델도 바꿔보고 꽤 많은 것을 시각화 하고 있다. 그랬더니 Tensorboard가 memory를 85% 잡아먹으면서 swap memory까지 꽉차서 모델 inference 시에 "OSError: [Errno 12] Cannot allocate memory" 에러가 났다. Swap memory를 늘릴까도 했지만 이미 59G인데 그렇게까지 해야하나 싶어서 tensorboard를 잠시 중단하고 inference함으로써 문제를 해결했다. 이 문제로 성가신 일이 또 발생하면 swap memory를 늘려야지. 아래는 swap memory 늘리는 방법을 자세히 적은 블로그 글이다. https://www.digitalocean.com/community/tutorials/ho..
shutil 패키지를 이용해서 python에서 파일 복사/이동/삭제하기 Shell command Python method cp src dst shutil.copy(src, dst) mv src dst shutil.move(src, dst) cp -r src dst shutil.copytree(src, dst) rm -r src shutil.rmtree(src) rm src os.remove(src) shutil에 rm은 없어서 os.remove()를 써야 함. src나 dst가 상대경로이거나 dir이거나 file이거나 등등의 상황들은 shell command에서 사용하는 방법과 동일해서 적지 않았음. 이 글은 shell command에 익숙한 사람(나)을 위해 썼음.
특정 git branch만 clone하기 git clone -b {branch_name} --single-branch {저장소 URL} 예시. git clone -b relative_f0 --single-branch http://github.com/hash2430/mellotron
git rest을 이용해 unstage하거나 unroll하기 1. Stage되지 않은 변경 사항들을 날리기 git checkout -- . 2. Unstaging git reset HEAD {file_name} 3. Unroll soft git reset HEAD~1 --soft 방금 전 커밋을 unroll하되 그 커밋에 해당하는 변경 사항은 local directory에 남겨 둔다. HEAD~1의 자리에 특정 리비전을 명시하면 그 커밋으로 돌아감. 4. Unroll hard git reset HEAD~1 --hard 방금 전 커밋을 unroll하고 그 커밋에 해당하는 변경 사항도 local directory에서 날려 버린다. HEAD~1의 자리에 특정 리비전을 명시하면 그 커밋으로 돌아감.