기존의 database 모델들을 가져오는 쉬운 방법 중 하나가
tensorflow_datasets 를 통해서 가져오는 방법이다.
이를 통해서 공개되어 있는 많은 데이터셋들의 원본을 tfds 모듈로 불러들일 수 있다.
우리는 이를 가져와서 우리 목적에 맞게 전처리 작업을 해주면 되는 것이다.
tensorflow_datasets as tfds
# 로그 출력 방지
tfds.disable_progress_bar()
tfds.list_builders() 를 통해서 내장된 database 모델들을 가져올 수 있다.
print(len(tfds.list_builders()))
> 1122
데이터 세트를 로드하는 가장 쉬운 방법은 tfds.load
이다.
tfds.load('mnist', split='train', shuffle_files=True)
load 옵션은 다음과 같다.
dataset 분할(split) 에는 다음과 같은 종류가 있다.
- 일반 분할 ( 'train' , 'test' ): 분할 내의 모든 예가 선택되었습니다.
- 슬라이스 : 슬라이스는 파이썬 슬라이스 표기법 과 동일한 의미를 갖습니다. 슬라이스는 다음과 같을 수 있습니다.
- 절대 ( 'train[123:450]' , train[:4000] ): (읽기 순서에 대한 주의 사항은 아래 참고 참조)
- 백분율 ( 'train[:75%]' , 'train[25%:75%]' ): 전체 데이터를 100개의 짝수 조각으로 나눕니다. 데이터를 100으로 나눌 수 없는 경우 일부 백분율에 추가 예가 포함될 수 있습니다.
- 샤드 ( train[:4shard] , train[4shard] ): 요청된 샤드에서 모든 예제를 선택합니다. (분할의 샤드 수를 얻으려면 info.splits['train'].num_shards 참조)
- 분할의 합집합 ( 'train+test' , 'train[:25%]+test' ): 분할이 함께 인터리브됩니다.
- 전체 데이터 세트 ( 'all' ): 'all' 은 모든 분할의 합집합에 해당하는 특수 분할 이름입니다( 'train+test+...' 와 동일).
- 분할 목록 ( ['train', 'test'] ): 여러 tf.data.Dataset 이 별도로 반환됩니다.
아래와 같이 분할을 진행 할 수도 있다.
# Divide the dataset into 3 even parts, each containing 1/3 of the data
split0, split1, split2 = tfds.even_splits('train', n=3)
ds = tfds.load('my_dataset', split=split2)
https://www.tensorflow.org/datasets/splits
https://www.tensorflow.org/datasets/overview
https://teddylee777.github.io/tensorflow/tfds-datasets