gpt4 book ai didi

python - 使用 tensorflow 数据集混洗输入文件

转载 作者:行者123 更新时间:2023-11-30 22:25:03 25 4
gpt4 key购买 nike

使用旧的输入管道 API,我可以执行以下操作:

filename_queue = tf.train.string_input_producer(filenames, shuffle=True)

然后将文件名传递给其他队列,例如:

reader = tf.TFRecordReader()
_, serialized_example = reader.read_up_to(filename_queue, n)

如何使用 Dataset -API 实现类似的行为?

tf.data.TFRecordDataset() 需要固定顺序的文件名张量。

最佳答案

开始按顺序阅读它们,shuffle紧接着:

BUFFER_SIZE = 1000 # arbitrary number
# define filenames somewhere, e.g. via glob
dataset = tf.data.TFRecordDataset(filenames).shuffle(BUFFER_SIZE)

编辑:

this question的输入管道让我了解了如何使用 Dataset API 实现文件名改组:

dataset = tf.data.Dataset.from_tensor_slices(filenames)
dataset = dataset.shuffle(BUFFER_SIZE) # doesn't need to be big
dataset = dataset.flat_map(tf.data.TFRecordDataset)
dataset = dataset.map(decode_example, num_parallel_calls=5) # add your decoding logic here
# further processing of the dataset

这会将一个文件的所有数据放在下一个文件之前,依此类推。文件被打乱,但其中的数据将以相同的顺序生成。您也可以将 dataset.flat_map 替换为 interleave同时处理多个文件并返回每个文件的样本:

dataset = dataset.interleave(tf.data.TFRecordDataset, cycle_length=4)

注意: interleave 实际上并不在多个线程中运行,它是一个循环操作。对于真正的并行处理,请参阅 parallel_interleave

关于python - 使用 tensorflow 数据集混洗输入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47650132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com