
torch의 tensor를 사용하다보면 종종 출력이 대부분 ...으로 생략되어 내부의 값 확인이 어려운 경우가 있다.이럴때는 torch.set_printoptions()함수를 사용하면 된다.torch.set_printoptions(threshold=1000, edgeitems=10, linewidth=150)1. threshold은 default값은 1000이다. 이 값을 늘리면 텐서에 표시해야 할 값들이 threshold개수보다 많아질 경우에만 ... 형태의 생략을 표시하도록 한다. 10000정도를 줘버리면 아마 모든 텐서가 표시될 공산이 크다. 그러나 모든 텐서가 또 전부 표현되면 생략된것만 못한수준의 가독성 떨어지는 텐서가 될 가능성도 높으니 알아서 경험적으로 조절해서 사용하면 된다.2. edgei..

torch.linalg.norm함수는 N차원의 벡터의 norm값을 구하는 함수다.다음과 같이 사용한다. torch.linalg.norm(input, ord=2, dim, keepdim)v = torch.tensor([ [[3.0, 4.0, 5.0], [1.0, 2.0, 4.0]], [[0.0, 5.0, 5.0], [6.0, 8.0, 5.0]], [[5.0, 3.0, 9.0], [2.0, 1.0, 1.0]]]) # shape = (3, 2, 3) [BS, L, D]#### dim=0 (BS) ####print(torch.linalg.norm(v, ord=2, dim=0, keepdim=True))# tensor([[[ 5.8310, 7.0711, 11.4455..

너 쌓여있잖아https://cryptosalamander.tistory.com/186 [Python / Linux] GPU 메모리 비우기, 프로세스 전부 종료하기GPU 메모리 비우기, 프로세스 전부 종료하기 pytorch나 tensorflow와 같은 인공지능 프레임워크를 사용하다보면, 중간에 예기치 않게 프로그램이 종료될 때가 있는데, 이 때 문제점이 data_loader의 num_worcryptosalamander.tistory.com본 포스팅은 해당 블로그의 글을 200% 참고하였습니다.그냥 내가 다시 구글링할 키워드 찾기가 어려울 것 같아서 코드 복붙합니다. Respect합니다.우선 프로세스가 쌓여있는 GPU Number를 확인해준다.주의) 다음 코드를 입력시 해당 GPU에 올라간 모든 python..
종종 nn.Module을 상속한 class의 __init__에서 self.register_buffer라는 코드를 마주하게 되는데 몇번 공부하긴 했다만 매번 까먹어서 정리한다. self.register_buffer(name, tensor)self.register_buffer는 학습은 하지 않지만, 모델과 함께 저장/불러오기되는 텐서를 등록하는 코드이다.register_buffer에 등록된 파라미터들은 모델의 역전파가 되는 과정에서 학습되지 않지만 모델을 저장할 때, 예를들어 state_dict등에는 등록된다. 또한 .to(device)등을 이용해 CPU나 CUDA로 옮기는 기능도 정상적으로 작동한다.예를들어 class init 내부에 다음과 같은 코드가 있다면class MyClass(nn.Module): ..
코드를 공부하는데 다음과 같은 이해할 수 없는 코드가 있었다.if self.eight: max_length = math.ceil(max_length / 8) * 8이게뭐람? max length 를 8로 나누고 올림한 다음 다시 8을 곱해라? 뭐.. 뜬금없이 왜하는건지 모를 코드였는데 찾아보니 GPU연산 효율을 위해 8의 배수가 되도록 max_length를 맞추는 코드라고 한다.GPU 연산에 사용되는 CUDA는 8, 16, 32처럼 2의 배수로 align된 데이터에 대해서 연산 효율이 훨씬 좋다고 한다.특히 transform block이나 CNN에 대해서는 padding을 통해서 길이를 맞춰줄 경우 효율이 극대화 된다고 한다.그런 이유로 지금까지 MLP등의 모델에서 128, 256, 512등의 2의..
약간 고급 코드로 들어가기 시작하면 DataLoader를 그냥 사용하는 경우가 드물어진다.보통은 DataLoader의 collate_fn이라는 메서드를 본인들의 데이터세트에 맞춰 직접 구현해서 사용하는 경우가 많아지는데 collate_fn을 지금까지 딱히 주의깊게 본 적은 없었다.나도 이제 슬슬 내 데이터를 직접 구현해서 추가하려고 하기 때문에 collate_fn의 동작 방식과 왜 사용하는지를 알고 있어야 할 것 같아서 정리해본다.DataLoader( train_dataset, batch_size=config.train.batch_size, collate_fn=PaddingCollate(), shuffle=True, num_workers..
가끔보면 다음처럼 torch의 DataLoader를 inf_iterator라는 함수를 따로 만들어서 태우는 경우가 있다.def inf_iterator(iterable): iterator = iterable.__iter__() while True: try: yield iterator.__next__() except StopIteration: iterator = iterable.__iter__()train_iterator = inf_iterator(DataLoader( train_dataset, batch_size=config.train.batch_size, collate_fn=PaddingC..
PyTorch의 DataLoader는 num_workers > 0일 때,데이터 로딩을 별도의 subprocess(자식 프로세스) 로 실행하는데그런데 그 subprocess에서는 input() 같은 interactivity가 불가능함DataLoader의 num_wokrers 옵션을 0이 아닌 값을 주고 data class의 내부에 input() 함수를 사용했다면 EOFError: EOF when reading a line에러를 보게된다. 해결은 간단하다 DataLoader 코드에 num_workers 옵션을 0을 주면 된다.

좋은 학회에 등재된 논문은 반드시 좋은 논문일까?반드시 그렇지만은 않다고 생각은 해오고 있었지만 최근 읽은 AbDiffuser라는 논문을 통해 반드시 그렇지는 않다는 것을 새삼 강렬히 깨닫게 되었다.해당 논문은 Deep Learning 분야의 저명한 Top tier Conference인 NeurIPs(NIPS) 논문으로 BK에서도 최상위 학회로 인정하여 IF 4.0을 인정하는, 1저자 등록되면 플랜카드가 붙을법한 저명한 학회에 메인 페이퍼로 나와 심지어 spotlight까지 받은 논문이다.그런데 나는 솔직히 이해가 안간다. 내가 해당 논문의 리뷰어였다면 나는 매우 부정적으로 해당 논문을 바라봤을 것이다. 실제로 open reivew 페이지를 가보면 리뷰어 중 한명이 나처럼 매우 부정적인 스탠스를 취하고 ..

본 포스팅은 SO(3) group과 so(3) group의 면밀한 대수학, 공학적 개념에 대해서는 따로 다루지 않고 이해를 위해 직관적으로만 이야기합니다. 본인이 애초에 수학이나 로봇공학 전공자가 아니라 완벽하게 이해할 수도 없고 그런 수준의 이해를 요하지 않는 연구를 하고 있기 때문입니다😅일단은 둘 다 '3차원 공간상의 강체(또는 그냥 물체) 회전을 표현하기 위한 3x3 행렬을 의미한다'고 이해하고 넘어갑시다.이때 SO(3) group의 행렬을 R이라고 하고 so(3) group의 행렬을 S라고 하겠습니다. 이 둘의 면밀한 차이를 생각하기보다는 저는 다음과 같이 생각하는 편이 이해하기 쉽다고 생각합니다. 굵은 글씨로 표현된 대문자는 행렬을 의미합니다.숫자에는 서수와 기수가 있죠 하나, 둘, 셋으로 셀..
- Total
- Today
- Yesterday
- 이왜안
- 인공지능
- nanobody
- marginal likelihood
- 최대우도추정
- Manimlibrary
- 제한볼츠만머신
- Matrix algebra
- 나노바디
- 기계학습
- MatrixAlgebra
- 백준
- manimtutorial
- eigenvector
- kl divergence
- variational autoencoder
- 3b1b
- eigenvalue
- MLE
- elementry matrix
- 선형대수
- ai신약개발
- 오일석기계학습
- 베이즈정리
- manim
- manim library
- 3B1B따라잡기
- 파이썬
- MorganCircularfingerprint
- dataloader
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |