使用不同长度的示例缓存数据集

时间:2016-10-10 15:29:23

标签: tensorflow tensorflow-datasets

我的数据集由5-180秒之间的音频片段组成。示例的数量足够小,可以将其缓存在内存中,而不是一遍又一遍地从磁盘中读取。将数据存储在常量张量/变量中并使用tf.train.slice_input_producer将允许我将数据集缓存在内存中,但它需要将所有数据存储在一个矩阵中。由于某些示例比其他示例长得多,因此该矩阵可能不必要地大,并且可能对RAM而言太大。

我可以简单地为我的数据提供一个numpy数组列表,并使用feed_dict以非数据流方式执行整个输入读取 - 随机化 - 预处理,但我想知道是否有办法做它没有完全放弃输入读取 - 随机化 - 预处理部分的张量流。

谢谢!

1 个答案:

答案 0 :(得分:2)

最新的tf.data库提供了tf.data.Dataset.cache方法,可将整个数据集缓存到内存或文件中。

例如:

dataset = ...
dataset = dataset.map(preprocessing_fn)  # apply preprocessing
dataset = dataset.cache()  # cache entire dataset in memory after preprocessing

我已提供有关如何在this answer中使用cache()的详细信息。