K 개발자

텐서플로 데이터 API 본문

인공지능/핸즈온 머신러닝

텐서플로 데이터 API

ddingz 2020. 12. 19. 02:15

텐서플로에서 데이터를 효율적으로 적재, 파싱, 전처리

메모리 용량에 맞지 않는 아주 큰 규모의 데이터셋으로 딥러닝 시스템을 훈련해야 하는 경우가 많다.
다른 딥러닝 라이브러리를 사용해서는 대규모 데이터셋을 효율적으로 로드하고 전처리하도록 구현하기가 까다롭지만 텐서플로 데이터 API는 이를 쉽게 처리
텐서플로가 멀티스레딩, 큐, 배치, 프리페치prefetch 같은 상세한 사항을 모두 대신 처리해주며 데이터 API는 tf.keras와 잘 동작
기본 기능으로 데이터 API는 텍스트 파일(e.g. CSV 파일), 고정 길이의 레코드를 가진 이진 파일, 텐서플로의 TFRecord 포맷을 사용하는 이진 파일에서 데이터를 읽을 수 있다. (이 포맷은 길이가 다른 레코드를 지원)
TFRecord는 일반적으로 (오픈 소스 이진 포맷인) 프로토콜 버퍼protocol buffer를 담은 유연하고 효율적인 이진 포맷
데이터 API는 SQL 데이터베이스에서 읽는 기능을 지원하고 구글 빅쿼리BigQuery와 같은 다양한 데이터 소스에서 읽을 수 있는 오픈 소스도 있다.
일반적으로 정규화 같은 데이터 전처리가 필요하고 텍스트나 범주형 등과 같은 특성들은 원-핫 인코딩, BoW 인코딩, 임베딩embedding 등을 사용하여 인코딩되어야 한다.
이런 모든 전처리 과정을 처리하기 위해 사용자 정의 전처리 층을 만드는 방법이 있고 케라스에서 제공하는 표준 전처리 층을 사용하는 방법도 있다.
텐서플로 생태계에 있는 관련된 몇 가지 프로젝트

  • TF 변환 (tf.Transform)
    (실행 속도를 높이기 위해) 훈련 전에 전체 훈련 세트에 대해 실행하는 전처리 함수를 작성
    그다음 텐서플로 함수로 변환하고 상용 환경에 배포된 다음 훈련된 모델과 협업하여 새로운 샘플에 대해 동적으로 전처리를 수행
  • TF 데이터셋 (TFDS)
    각종 데이터셋을 다운로드할 수 있는 편리한 함수를 제공 (이미지넷과 같은 대용량 데이터셋도 포함)
    또한 데이터 API로 조작할 수 있는 편리한 데이터셋 객체도 제공

실습코드링크 : 대량의 데이터 다루기

'인공지능 > 핸즈온 머신러닝' 카테고리의 다른 글

순환 신경망과 합성곱 신경망  (0) 2021.01.07
합성곱 신경망  (0) 2020.12.28
자동 미분  (0) 2020.12.10
텐서플로란  (0) 2020.12.08
심층 신경망 훈련  (0) 2020.11.26
Comments