작성
·
491
0
답변 1
1
안녕하세요~. 반갑습니다.
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 반복 설정이 지정되어 있기 때문입니다.)
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
감사합니다.