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.
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.