티스토리 뷰
종종 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):
def __init__(self,num_funcs=3):
self.register_buffer('freq_bands',
torch.FloatTensor([i+1 for i in range(num_funcs)] + [1./(i+1) for i in range(num_funcs)]))
# [i+1 for i in range(3)] → [1, 2, 3]
# [1./(i+1) for i in range(3)] → [1.0, 0.5, 0.333...]
# 따라서 self.freq_bands = torch.Tensor([1, 2, 3, 1.0, 0.5, 0.333...])
...
def forward(self, x):
return x * self.freq_bands
이런 형태로 사용할 수 있으며 한번 buffer에 등록된 self.freq_bands = torch.Tensor([1, 2, 3, 1.0, 0.5, 0.333...])는 backpropagation과정을 거치더라도 업데이트되지 않고 모든 iteration동안 torch.Tensor([1, 2, 3, 1.0, 0.5, 0.333...])값을 유지한 채 사용된다.
보통 다음과 같은 경우의 텐서들을 buffer로 등록해서 사용한다.
- positional encoding
- mask matrix
- Fourier freq bands
- adjacency matrix
- atom type embedding index 등
'Computer > 코딩 개꿀팁' 카테고리의 다른 글
| 벡터의 norm을 구하는 torch.linalg.norm (0) | 2025.06.27 |
|---|---|
| nvidia-smi에 쌓여있는 python 프로세스 한번에 처리하기 (0) | 2025.06.26 |
| 왜 torch 연산시에는 2의 배수를 사용할까? (0) | 2025.06.24 |
| torch DataLoader의 collate_fn에 대해 알아보자 (0) | 2025.06.24 |
| inf_iterator는 왜 쓰는걸까? (0) | 2025.06.24 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 베이즈정리
- MorganCircularfingerprint
- manim library
- manim
- eigenvalue
- 백준
- nanobody
- MLE
- 기계학습
- 3b1b
- Matrix algebra
- 3B1B따라잡기
- 인공지능
- manimtutorial
- 논문리뷰
- eigenvector
- 최대우도추정
- marginal likelihood
- 파이썬
- 나노바디
- 이왜안
- dataloader
- 선형대수
- 오일석기계학습
- Manimlibrary
- antigen antibody interaction prediction
- elementry matrix
- 항원항체결합예측모델
- ai신약개발
- MatrixAlgebra
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함