티스토리 뷰
가끔보면 다음처럼 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
- 선형대수
- dataloader
- Manimlibrary
- 백준
- 최대우도추정
- MatrixAlgebra
- eigenvector
- 이왜안
- 인공지능
- 3B1B따라잡기
- Matrix algebra
- variational autoencoder
- 나노바디
- elementry matrix
- 제한볼츠만머신
- manim library
- manim
- MLE
- manimtutorial
- eigenvalue
- 3b1b
- nanobody
- 파이썬
- MorganCircularfingerprint
- ai신약개발
- marginal likelihood
- kl divergence
- 오일석기계학습
- 베이즈정리
- 기계학습
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함