TensorflowのデータセットAPI(tf.data.Dataset)で作成されたデータセットをTest and Trainに分割する方法を知っている人はいますか?
all_dataset
変数のtf.data.Dataset
タイプ:
test_dataset = all_dataset.take(1000)
train_dataset = all_dataset.skip(1000)
テストデータセットには最初の1000個の要素があり、残りはトレーニングに使用されます。
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 と答えた後、この質問につまずいたので、愛を広めると思った
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
現在、Tensorflowにはそのためのツールは含まれていません。sklearn.model_selection.train_test_split
を使用してtrain/eval/testデータセットを生成し、それぞれtf.data.Dataset
を作成できます。