Weiß jemand, wie eine durch die Datensatz-API (tf.data.Dataset) in Tensorflow erstellte Datenmenge in Test and Train aufgeteilt wird?
Angenommen, Sie haben eine all_dataset
-Variable vom tf.data.Dataset
-Typ:
test_dataset = all_dataset.take(1000)
train_dataset = all_dataset.skip(1000)
Der Testdatensatz besteht jetzt aus den ersten 1000 Elementen und der Rest geht zum Training.
Sie können Dataset.take()
und Dataset.skip()
verwenden:
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)
Zur Verdeutlichung habe ich ein Beispiel für einen 70/15/15-Zug/Wert/Test-Split gegeben. Wenn Sie jedoch keinen Test oder Wertesatz benötigen, ignorieren Sie einfach die letzten beiden Zeilen.
Nehmen :
Erstellt ein Dataset mit höchstens Count-Elementen aus diesem Dataset.
Skip :
Erstellt ein Dataset, das die Anzahl der Elemente dieses Datasets überspringt.
Vielleicht möchten Sie auch Dataset.shard()
betrachten:
Erstellt ein Dataset, das nur 1/num_shards dieses Datasets enthält.
Haftungsausschluss Ich bin über diese Frage gestolpert, nachdem ich dieses beantwortet hatte, also dachte ich, ich würde die Liebe verbreiten
Sie können shard
verwenden:
dataset = dataset.shuffle() # optional
trainset = dataset.shard(2, 0)
testset = dataset.shard(2, 1)
Siehe: https://www.tensorflow.org/api_docs/python/tf/data/Dataset#shard
Jetzt enthält Tensorflow keine Werkzeuge dafür.
Sie können sklearn.model_selection.train_test_split
verwenden, um ein Train/Eval/Test-Dataset zu generieren, und dann jeweils tf.data.Dataset
erstellen.