Python 如何将多个数据集合并为一个数据集?

Python 如何将多个数据集合并为一个数据集?,python,tensorflow,tfrecord,tf.keras,eager-execution,Python,Tensorflow,Tfrecord,Tf.keras,Eager Execution,假设我有3个tfrecord文件,即neg.tfrecord,pos1.tfrecord,pos2.tfrecord 我用 此代码创建3个数据集对象 我的批量大小是400,包括200个neg数据、100个pos1数据和100个pos2数据。如何获得所需的数据集 我将在keras.fit()中使用此dataset对象(急切执行) 我的tensorflow版本是1.13.1 以前,我尝试为每个数据集获取迭代器,然后在获取数据后手动进行concat,但效率低下,GPU利用率不高。您可以使用交错 fil

假设我有3个tfrecord文件,即
neg.tfrecord
pos1.tfrecord
pos2.tfrecord

我用

此代码创建3个数据集对象

我的批量大小是400,包括200个neg数据、100个pos1数据和100个pos2数据。如何获得所需的数据集

我将在keras.fit()中使用此dataset对象(急切执行)

我的tensorflow版本是1.13.1


以前,我尝试为每个数据集获取迭代器,然后在获取数据后手动进行concat,但效率低下,GPU利用率不高。

您可以使用
交错

filenames = [tfrecord_file1, tfrecord_file2]
dataset = (Dataset.from_tensor_slices(filenames).interleave(lambda x:TFRecordDataset(x)
dataset = dataset.map(parse_fn)
...
或者你甚至可以尝试并行交织。看见

是的,它能工作!但我发现interleave平均只能读取3个tfrecord文件。如果我当前的批量大小是400,我需要从neg获取200个样本,从pos1获取100个样本,从pos2获取100个样本。我该怎么做?你可以在你的解析函数中这样做。或者平面图会适合您,或者最好创建另一个更详细的问题,并包含您尝试过的代码
filenames = [tfrecord_file1, tfrecord_file2]
dataset = (Dataset.from_tensor_slices(filenames).interleave(lambda x:TFRecordDataset(x)
dataset = dataset.map(parse_fn)
...