티스토리 뷰
가끔보면 다음처럼 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=PaddingCollate(),
shuffle=True,
num_workers=args.num_workers
))
근데 Prediction 모델만 학습해본 경험이 있는 나로서는 DataLoader만 적용해도 알아서 epoch를 잘 돌던 기억이 있는데 왜 굳이 inf_iterator라는걸 구현해서 사용하는건지? 이해가 가지 않았는데 굳이 찾아보지는 않았음
오늘 찾아보니까 예측모델과 달리 생성모델처럼 epoch를 설정하지 않고 100,000 step처럼 배치 데이터 단위로 학습을 설정하는 경우에는 아무래도 귀찮게 step/batch_size를 계산해서 epoch를 설정하는 것보다 그냥 배치 데이터 단위로 100,000번 학습하도록 하는 것이 더 직관적이기 때문에 inf_iterator 함수를 적용해주는 편이 더 좋다고 한다.
특히 DDPM 기반의 생성모델들은 T step이 보통 1000의 배수를 가지기 때문에 모든 스텝 t별로 학습되는 횟수의 기대값을 계산하기 더 편하지 않을까 싶다.
'Computer > 코딩 개꿀팁' 카테고리의 다른 글
| 왜 torch 연산시에는 2의 배수를 사용할까? (0) | 2025.06.24 |
|---|---|
| torch DataLoader의 collate_fn에 대해 알아보자 (0) | 2025.06.24 |
| 리눅스 사용자별 파티션 사용량 확인하는 코드 (0) | 2024.06.10 |
| [꿀팁] 리눅스, 다른 계정의 아나콘다 가상환경이 안보일 때 (0) | 2023.11.10 |
| [꿀팁] 리눅스 숨김파일 해제하는 방법/ ls -al말고 '해제'방법 (0) | 2023.11.10 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- nanobody
- manimtutorial
- MLE
- Manimlibrary
- 최대우도추정
- elementry matrix
- 3B1B따라잡기
- 이왜안
- marginal likelihood
- Matrix algebra
- dataloader
- 나노바디
- 3b1b
- MorganCircularfingerprint
- 항원항체결합예측모델
- manim
- 파이썬
- manim library
- eigenvalue
- ai신약개발
- MatrixAlgebra
- eigenvector
- 기계학습
- 백준
- 오일석기계학습
- 인공지능
- 논문리뷰
- 베이즈정리
- 선형대수
- antigen antibody interaction prediction
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함