인프런 커뮤니티 질문&답변
train_data = train_data.repeat().shuffle(60000).batch(100)
작성
·
515
0
답변 1
1
안녕하세요~. 반갑습니다.
1. repeat()
repeat()의 경우 전체 epoch의 반복횟수를 지정하는 옵션입니다. 즉 60000개의 mnist 트레이닝 데이터가 있다면 이를 몇번의 epoch 동안 반복할지를 결정합니다.
기본적으로 repeat() 형태로 지정하면 무한한 epoch만큼 반복하게 됩니다.
예를 들어
https://github.com/solaris33/deep-learning-tensorflow-book-code/blob/725016cb715c9df62a42d58cfce20614ca6810ba/Ch04-Machine_Learning_Basic/mnist_classification_using_softmax_regression_v2_keras.py#L18
코드에서 repeat()을 빼버리면
60000(mnist 트레이닝 데이터의 개수) / 100(batch_size) = 600
해서 600번(=1번의 epoch)만 학습할 수 있어서
https://github.com/solaris33/deep-learning-tensorflow-book-code/blob/725016cb715c9df62a42d58cfce20614ca6810ba/Ch04-Machine_Learning_Basic/mnist_classification_using_softmax_regression_v2_keras.py#L65
위에서처럼 1000번 반복을 수행하는 형태로 학습을 진행할 수 없습니다.(즉, 1000번 반복이 가능한 이유는 repeat() 설정으로 무한한 epoch 반복 설정이 지정되어 있기 때문입니다.)
2. shuffle()
shuffle()은 1번의 epoch이 끝났을때 전체 데이터의 순서를 한번 무작위로 섞어주는(shuffle) 옵셥입니다. 이때 인자로 섞을 데이터의 개수를 지정해줄 수 있는데 보통은 아래처럼
https://github.com/solaris33/deep-learning-tensorflow-book-code/blob/725016cb715c9df62a42d58cfce20614ca6810ba/Ch04-Machine_Learning_Basic/mnist_classification_using_softmax_regression_v2_keras.py#L18
전체 데이터의 개수를 1번의 epoch이 끝났을때 섞어주는 것이 일반적인 패턴입니다.(60000=mnist 트레이닝 데이터의 개수)
추가적인 내용은 아래 링크를 참조하세요.
https://www.tensorflow.org/api_docs/python/tf/data/Dataset
감사합니다.




