web-dev-qa-db-ja.com

TensorflowデータセットAPIによって作成されたデータセットをTrain and Testに分割しますか?

TensorflowのデータセットAPI(tf.data.Dataset)で作成されたデータセットをTest and Trainに分割する方法を知っている人はいますか?

19
Dani

all_dataset変数のtf.data.Datasetタイプ:

test_dataset = all_dataset.take(1000) 
train_dataset = all_dataset.skip(1000)

テストデータセットには最初の1000個の要素があり、残りはトレーニングに使用されます。

23
apatsekin

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 train/val/test分割を使用した例を挙げましたが、テストまたはvalセットが必要ない場合は、最後の2行を無視してください。

Take

このデータセットから最大でcount個の要素を持つデータセットを作成します。

Skip

このデータセットからcount個の要素をスキップするデータセットを作成します。

Dataset.shard() を調べることもできます。

このデータセットの1/num_shardsのみを含むデータセットを作成します。


免責事項 this one と答えた後、この質問につまずいたので、愛を広めると思った

11
ted

shardを使用できます:

dataset = dataset.shuffle()  # optional
trainset = dataset.shard(2, 0)
testset = dataset.shard(2, 1)

参照: https://www.tensorflow.org/api_docs/python/tf/data/Dataset#shard

0
Ben-Uri

現在、Tensorflowにはそのためのツールは含まれていません。
sklearn.model_selection.train_test_splitを使用してtrain/eval/testデータセットを生成し、それぞれtf.data.Datasetを作成できます。

0
Lunar_one