Как объединить несколько наборов данных в один набор данных? - PullRequest
1 голос
/ 14 марта 2019

Предположим, у меня есть 3 файла tfrecord, а именно neg.tfrecord, pos1.tfrecord, pos2.tfrecord.

Я использую

dataset = tf.data.TFRecordDataset(tfrecord_file)

, этот код создает 3 объекта набора данных.

Размер моей партии равен 400, включая 200 отрицательных данных, 100 данных pos1 и 100 данных pos2.Как я могу получить желаемый набор данных?

Я буду использовать этот объект набора данных в keras.fit () (Eager Execution).

Моя версия тензорного потока - 1.13.1.

Раньше я пытался получить итератор для каждого набора данных, а затем вручную получать данные после получения данных, но это было неэффективно, а загрузка графического процессора была невысокой.

1 Ответ

1 голос
/ 14 марта 2019

Вы можете использовать interleave

filenames = [tfrecord_file1, tfrecord_file2]
dataset = (Dataset.from_tensor_slices(filenames).interleave(lambda x:TFRecordDataset(x)
dataset = dataset.map(parse_fn)
...

Или вы можете даже попробовать параллельное чередование.См https://www.tensorflow.org/api_docs/python/tf/data/TFRecordDataset#interleave https://www.tensorflow.org/api_docs/python/tf/data/experimental/parallel_interleave

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...