Как разделить наборы данных Tensorflow? - PullRequest
0 голосов
/ 01 июля 2018

У меня есть набор данных tenorflow, основанный на одном файле .tfrecord. Как разделить набор данных на тестовые и обучающие наборы данных? Например. 70% поезд и 30% тест?

Edit:

Версия My Tensorflow: 1,8 Я проверил, нет функции "split_v", как указано в возможном дубликате. Также я работаю с файлом tfrecord.

1 Ответ

0 голосов
/ 01 июля 2018

Вы можете использовать Dataset.take() и Dataset.skip():

train_size = int(0.7 * DATASET_SIZE)
val_size = int(0.15 * DATASET_SIZE)
test_size = int(0.15 * DATASET_SIZE)

full_dataset = tf.data.TFRecordDataset(FLAGS.input_file)
full_dataset = full_dataset.shuffle()
train_dataset = full_dataset.take(train_size)
test_dataset = full_dataset.skip(train_size)
val_dataset = test_dataset.skip(val_size)
test_dataset = test_dataset.take(test_size)

Для большей общности я привел пример использования 70/15/15 split / val / test split, но если вам не нужен тест или набор значений, просто проигнорируйте последние 2 строки.

Take :

Создает набор данных с максимально возможным количеством элементов из этого набора данных.

Пропускаем

Создает набор данных, который пропускает количество элементов из этого набора данных.

Вы также можете посмотреть Dataset.shard():

Создает набор данных, который включает только 1 / num_shards этого набора данных.

...