shuffle — 매 epoch마다 섞기 ★★
shuffle=True를 주면 순회를 시작할 때마다 sample 순서를 새로 섞어요. 그러면 같은 데이터라도 epoch마다 배치 구성이 달라져요. 교수님이 같은 sample이 매번 같은 묶음으로만 들어가면 곤란하니까, 매번 섞으면 여러 상황을 고려해서 학습되는 효과가 있다고 설명했어요.
카드 놀이를 할 때 한 판이 끝나면 카드를 새로 섞고 나눠 줘요. 카드의 앞면(x)과 뒷면(y)은 붙어 있어서 짝은 그대로 같이 움직여요. 그리고 섞었다고 카드가 사라지지는 않아요. 한 epoch이 끝나면 모든 카드가 한 번씩 쓰인 거예요.
교수님 노트북에서 shuffle=True로 돌린 첫 배치는 이렇게 나왔어요. 실행할 때마다 달라요.
x의 순서는 뒤섞였지만 짝이 되는 y(11, 59, 17, 35)는 8-3 표의 값과 정확히 맞아요. 배치 수와 크기는 shuffle과 상관없이 [4, 4, 2]로 그대로예요.
| 구분 | shuffle=False | shuffle=True |
|---|---|---|
| 순서 | 매번 원래 순서대로 | epoch마다 새로 섞여요 |
| x와 y의 짝 | 유지 | 유지 |
| 배치 수 | 같음 | 같음 |
| 주로 쓰는 곳 | 평가(검증) | 학습(train) |
"학습에는 shuffle=True, 검증에는 shuffle=False"가 교수님이 노트북에 질문으로 적어 둔 내용이에요. 이유는 9장에서 다뤄요. 평가는 순서를 섞을 필요가 없고, 결과를 매번 같은 순서로 비교하기 쉽게 하려는 거예요.
"shuffle=True의 효과"는 매 순회마다 sample 순서가 달라진다(입력과 정답의 짝은 유지)예요. "일부 데이터가 빠진다"거나 "배치 크기가 바뀐다"는 보기는 오답이에요.
잠깐 확인 — shuffle=True이면 한 epoch에 일부 sample이 빠질 수 있을까요?
아니에요. 순서만 섞이고 모든 sample이 한 번씩 사용돼요. 빠지는 경우는 drop_last=True로 모자란 마지막 배치를 버릴 때뿐이에요.
자료: 7주차 · Week05_Dataset_DataLoader_Train_Validation(part1) · 7주차 녹취(빅데이터07)