web-dev-qa-db-fra.com

Comment diviser les jeux de données Tensorflow?

J'ai un ensemble de données tensorflow basé sur un fichier .tfrecord. Comment diviser l'ensemble de données en ensembles de données de test et d'entraînement? Par exemple. 70% de train et 30% de test?

Éditer:

Ma version Tensorflow: 1.8 J'ai vérifié, il n'y a pas de fonction "split_v" comme mentionné dans le double possible. Je travaille également avec un fichier tfrecord.

11
Lukas Hestermeyer

Vous pouvez utiliser Dataset.take() et 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(test_size)
test_dataset = test_dataset.take(test_size)

Pour plus de généralité, j'ai donné un exemple en utilisant une répartition train/val/test 70/15/15 mais si vous n'avez pas besoin d'un test ou d'un ensemble de val, ignorez simplement les 2 dernières lignes.

Prendre :

Crée un jeu de données avec au plus le nombre d'éléments de ce jeu de données.

Ignorer :

Crée un ensemble de données qui ignore le nombre d'éléments de cet ensemble de données.

Vous pouvez également examiner Dataset.shard() :

Crée un ensemble de données qui comprend uniquement 1/num_shards de cet ensemble de données.

15
ted