Разделение набора данных TensorFlow с использованием tfds.percent - PullRequest
0 голосов
/ 12 июня 2019

Я хочу загрузить набор данных радужной оболочки из tenorflow_datasets и разделить его на 67% (2/3) для обучения и оставшиеся 1/3 для теста. Общее количество элементов составляет 150, и я предполагаю, что они не перетасованы.

Итак, у меня есть следующий код:

import tensorflow_datasets as tfds

first_67_percent = tfds.Split.TRAIN.subsplit(tfds.percent[:67])
last_33_percent = tfds.Split.TRAIN.subsplit(tfds.percent[-33:])

ds_train_orig = tfds.load('iris', split=first_67_percent)
ds_test = tfds.load('iris', split=last_33_percent)

Теперь, когда я смотрю на размеры каждого разделения, я вижу следующее:

labels_train = []
for i,item in enumerate(ds_train_orig):
    labels_train.append(item[1].numpy())

labels_test = []
for i,item in enumerate(ds_test):
    labels_test.append(item[1].numpy())
print('Training Set: ',len(labels_train), 'Test Set: ', len(labels_test))
Training Set:  117 Test Set:  33

, поэтому кажется, что тренировочный набор имеет 117 элементов, а тестовый набор - 33. Но я ожидал получить 100 за обучение и 50 за тестирование.

Затем я попытался использовать другой подход от tfds.subsplit:

split_train, split_test = tfds.Split.TRAIN.subsplit([2, 1])

ds_train_orig = tfds.load('iris', split=split_train)
ds_test = tfds.load('iris', split=split_test)

, что также привело к 116 тренировочным и 34 тестовым образцам.

Есть ли какие-либо проблемы в TensorFlow, или я что-то упустил?

...