web-dev-qa-db-ja.com

Tensorflowデータセットを分割するにはどうすればよいですか?

1つの.tfrecordファイルに基づくテンソルフローデータセットがあります。データセットをテストデータセットとトレーニングデータセットに分割するにはどうすればよいですか?例えば。 70%の訓練と30%のテスト?

編集:

私のTensorflowバージョン:1.8また、tfrecordファイルを使用しています。

11

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(test_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のみを含むデータセットを作成します。

15
ted