배치 개수와 마지막 배치 크기 계산 ★★★
샘플 시험 4번의 핵심이에요. 규칙은 두 가지뿐이에요.
drop_last=False(기본)이면 배치 수 = 올림(sample 수 ÷ batch_size)이고, 마지막 배치는 남은 만큼(나머지)만 들어요. 나머지가 없으면 마지막도 꽉 차요.
drop_last=True이면 배치 수 = 내림이고 모자란 마지막 배치는 버려요.
예를 들어 10 ÷ 4 = 2.5이니까 올림하면 3개예요. 4개 + 4개 + (10 − 8 = 2개)로 나뉘어요. 교수님 노트북과 제가 실행한 결과를 표로 모았어요.
| sample 수 | batch_size | drop_last | 배치 수 | 각 배치 크기 |
|---|---|---|---|---|
| 10 | 3 | False | 4 | [3, 3, 3, 1] |
| 10 | 4 | False | 3 | [4, 4, 2] |
| 10 | 6 | False | 2 | [6, 4] |
| 10 | 4 | True | 2 | [4, 4] (마지막 2개 버림) |
| 90 | 20 | False | 5 | [20, 20, 20, 20, 10] |
| 90 | 20 | True | 4 | [20, 20, 20, 20] |
| 1000 | 20 | False | 50 | 20이 50번 |
| 100 | 32 | False | 4 | [32, 32, 32, 4] |
마지막 배치를 구하는 요령은 이래요. 반복문이 끝난 뒤의 batch_x, batch_y는 마지막으로 꺼낸 배치예요. 파이썬에서 for 문 변수는 반복이 끝나도 마지막 값이 남아 있기 때문이에요. drop_last=False이면 마지막 배치는 맨 끝 sample들이고, drop_last=True이면 버려진 것을 뺀 마지막 꽉 찬 배치예요.
- drop_last=False, batch_size=4 → 마지막 배치는 8번, 9번 sample → y = [53.0, 59.0]
- drop_last=True, batch_size=4 → 마지막 배치는 4~7번 sample → y = [29.0, 35.0, 41.0, 47.0]
배치 수는 "올림"이에요(drop_last를 안 쓰면). 10 ÷ 4 = 2.5 → 3. 90 ÷ 20 = 4.5 → 5. 마지막 크기는 나머지예요. 10을 4로 나눈 나머지 2, 90을 20으로 나눈 나머지 10이에요. 나머지가 0이면 마지막도 꽉 차요.
① 배치 수는 올림(drop_last=True면 내림)으로 계산해요. ② 배치 크기 목록은 batch_size를 반복하다가 마지막에 나머지를 적어요. ③ 마지막 배치 값은 맨 뒤 sample을 직접 계산해요. 그리고 문제 코드에서 shuffle=False인지도 확인하세요. True이면 마지막 배치에 어떤 sample이 들어갈지 매번 달라져서 값을 하나로 정할 수 없어요.
잠깐 확인 — sample 100개, batch_size 32, drop_last=False이면 배치 수와 마지막 배치 크기는?
배치 수는 올림(100 ÷ 32 = 3.125) = 4이고, 마지막 크기는 100 − 32×3 = 4예요. [32, 32, 32, 4]예요.
자료: 7주차 · Week05_Dataset_DataLoader_Train_Validation(part1) · 7주차 녹취(빅데이터07)