Я хочу загрузить набор данных радужной оболочки из 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, или я что-то упустил?