863
부록 A
연습문제 정답
13
장
:
텐서플로에서 데이터 적재와 전처리하기
1
.
대용량 데이터셋을 읽고 효율적으로 전처리하는 것은 복잡한 엔지니어링 업무입니다. 데
이터
API
를 사용하면 매우 간단합니다. 데이터
API
는 많은 기능을 제공합니다. (텍스트
나 이진 파일과 같은) 다양한 소스에서 데이터를 적재하거나 동시에 여러 소스에서 데이
터를 읽고, 변환하고, 레코드를 교대로 처리하고, 데이터를 섞을 수 있습니다. 배치와 프리
페치 기능도 제공합니다.
2
.
대용량 데이터셋을 여러 파일로 나누면 셔플링 버퍼를 사용해 데이터를 잘게 섞기 전에 크
게 섞을 수 있습니다. 또한 한 대의 컴퓨터에 담을 수 없는 아주 큰 데이터셋을 다룰 수 있
습니다. 하나의 큰 파일보다 수천 개의 작은 파일을 다루는 것이 쉽습니다. 예를 들어 데이
터를 여러 개의 서브 세트로 나누기 쉽습니다. 마지막으로 여러 대의 서버에 여러 파일로
데이터를 나누면 동시에 여러 서버에서 파일을 다운로드할 수 있어 네트워크 밴드위스를
효율적으로 사용할 수 있습니다.
3
. 텐서보드를 사용해 프로파일링 데이터를 시각화할 수 있습니다.
GPU
가 완전히 활용되지
않고 입력 파이프라인에 병목현상이 보인다면 여러 스레드에서 동시에 데이터를 읽고 전
처리하여 몇 개의 배치를 프리페치하여 해결할 수 있습니다. 이렇게 해도 훈련할 때
GPU
를
100
% 사용하지 못한다면 전처리 코드를 최적화해볼 수 있습니다. 훈련하는 동안 동시
에 전처리할 필요가 없다면 데이터셋을 여러 개의
TFRecord ...