날짜를 저장하십시오! Google I / O가 5 월 18 일부터 20 일까지 반환됩니다. 지금 등록
이 페이지는 Cloud Translation API를 통해 번역되었습니다.
Switch to English

분할 및 슬라이싱

모든 DatasetBuilder 는 분할 (예 : train , test )로 정의 된 다양한 데이터 하위 집합을 노출합니다. tfds.load() 또는 tfds.DatasetBuilder.as_dataset() 를 사용하여tf.data.Dataset 인스턴스를 생성 할 때 검색 할 분할을 지정할 수 있습니다. 분할의 슬라이스와 이들의 조합을 검색 할 수도 있습니다.

슬라이싱 API

슬라이싱 지침은 tfds.load 또는 tfds.DatasetBuilder.as_dataset 지정됩니다.

명령어는 문자열 또는 ReadInstruction 으로 제공 될 수 있습니다. 문자열은 간단한 경우에 더 간결하고 읽기 쉬운 반면 ReadInstruction 은 더 많은 옵션을 제공하며 변수 분할 매개 변수와 함께 사용하는 것이 더 쉬울 수 있습니다.

문자열 API를 사용하는 예 :

# The full `train` split.
train_ds = tfds.load('mnist', split='train')

# The full `train` split and the full `test` split as two distinct datasets.
train_ds, test_ds = tfds.load('mnist', split=['train', 'test'])

# The full `train` and `test` splits, interleaved together.
train_test_ds = tfds.load('mnist', split='train+test')

# From record 10 (included) to record 20 (excluded) of `train` split.
train_10_20_ds = tfds.load('mnist', split='train[10:20]')

# The first 10% of train split.
train_10pct_ds = tfds.load('mnist', split='train[:10%]')

# The first 10% of train + the last 80% of train.
train_10_80pct_ds = tfds.load('mnist', split='train[:10%]+train[-80%:]')

# 10-fold cross-validation (see also next section on rounding behavior):
# The validation datasets are each going to be 10%:
# [0%:10%], [10%:20%], ..., [90%:100%].
# And the training datasets are each going to be the complementary 90%:
# [10%:100%] (for a corresponding validation set of [0%:10%]),
# [0%:10%] + [20%:100%] (for a validation set of [10%:20%]), ...,
# [0%:90%] (for a validation set of [90%:100%]).
vals_ds = tfds.load('mnist', split=[
    f'train[{k}%:{k+10}%]' for k in range(0, 100, 10)
])
trains_ds = tfds.load('mnist', split=[
    f'train[:{k}%]+train[{k+10}%:]' for k in range(0, 100, 10)
])

ReadInstruction API를 사용하는 예 (위와 동일) :

# The full `train` split.
train_ds = tfds.load('mnist', split=tfds.core.ReadInstruction('train'))

# The full `train` split and the full `test` split as two distinct datasets.
train_ds, test_ds = tfds.load('mnist', split=[
    tfds.core.ReadInstruction('train'),
    tfds.core.ReadInstruction('test'),
])

# The full `train` and `test` splits, interleaved together.
ri = tfds.core.ReadInstruction('train') + tfds.core.ReadInstruction('test')
train_test_ds = tfds.load('mnist', split=ri)

# From record 10 (included) to record 20 (excluded) of `train` split.
train_10_20_ds = tfds.load('mnist', split=tfds.core.ReadInstruction(
    'train', from_=10, to=20, unit='abs'))

# The first 10% of train split.
train_10_20_ds = tfds.load('mnist', split=tfds.core.ReadInstruction(
    'train', to=10, unit='%'))

# The first 10% of train + the last 80% of train.
ri = (tfds.core.ReadInstruction('train', to=10, unit='%') +
      tfds.core.ReadInstruction('train', from_=-80, unit='%'))
train_10_80pct_ds = tfds.load('mnist', split=ri)

# 10-fold cross-validation (see also next section on rounding behavior):
# The validation datasets are each going to be 10%:
# [0%:10%], [10%:20%], ..., [90%:100%].
# And the training datasets are each going to be the complementary 90%:
# [10%:100%] (for a corresponding validation set of [0%:10%]),
# [0%:10%] + [20%:100%] (for a validation set of [10%:20%]), ...,
# [0%:90%] (for a validation set of [90%:100%]).
vals_ds = tfds.load('mnist', [
    tfds.core.ReadInstruction('train', from_=k, to=k+10, unit='%')
    for k in range(0, 100, 10)])
trains_ds = tfds.load('mnist', [
    (tfds.core.ReadInstruction('train', to=k, unit='%') +
     tfds.core.ReadInstruction('train', from_=k+10, unit='%'))
    for k in range(0, 100, 10)])

tfds.even_splits

tfds.even_splits 는 동일한 크기의 겹치지 않는 하위 분할 목록을 생성합니다.

assert tfds.even_splits('train', n=3) == [
    'train[0%:33%]', 'train[33%:67%]', 'train[67%:100%]',
]

백분율 슬라이스 및 반올림

백분율 ( % ) 단위를 사용하여 분할 슬라이스가 요청되고 요청 된 슬라이스 경계가 100 균등하게 분할되지 않으면 경계를 가장 가까운 정수 ( closest )로 반올림하는 기본 동작입니다. 이는 일부 슬라이스에 다른 것보다 더 많은 예제가 포함될 수 있음을 의미합니다. 예를 들면 :

# Assuming "train" split contains 101 records.
# 100 records, from 0 to 100.
tfds.load("mnist", split="test[:99%]")
# 2 records, from 49 to 51.
tfds.load("mnist", split="test[49%:50%]")

또는 사용자가 반올림 pct1_dropremainder 사용할 수 있으므로 지정된 백분율 경계가 1 %의 배수로 처리됩니다. 이 옵션은 일관성이 필요할 때 사용해야합니다 (예 : len(5%) == 5 * len(1%) ). 즉, info.split[split_name].num_examples % 100 != 0 경우 마지막 예제가 잘릴 수 있습니다.

예:

# Records 0 (included) to 99 (excluded).
split = tfds.core.ReadInstruction(
    'test',
    to=99,
    rounding='pct1_dropremainder',
    unit = '%',
)
tfds.load("mnist", split=split)

재현성

하위 분할 API는 데이터 세트의 주 버전이 일정 ReadInstruction 주어진 분할 슬라이스 (또는 ReadInstruction )가 항상 주어진 데이터 세트에서 동일한 레코드 세트를 생성하도록 보장합니다.

tfds.load("mnist:3.0.0", split="train[10:20]")tfds.load("mnist:3.2.0", split="train[10:20]") 플랫폼, 아키텍처 등에 관계없이 항상 동일한 요소를 포함합니다. 일부 레코드의 값이 다를 수 있습니다 (예 : imgage 인코딩, 레이블, ...).