webentwicklung-frage-antwort-db.com.de

Ein mit Tensorflow-Dataset-API erstelltes Dataset in Train and Test aufteilen?

Weiß jemand, wie eine durch die Datensatz-API (tf.data.Dataset) in Tensorflow erstellte Datenmenge in Test and Train aufgeteilt wird?

10
Dani

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.

9
apatsekin

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

2
ted

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

0
Ben-Uri

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. 

0
Lunar_one