我的数据集由5-180秒之间的音频片段组成。示例的数量足够小,可以将其缓存在内存中,而不是一遍又一遍地从磁盘中读取。将数据存储在常量张量/变量中并使用tf.train.slice_input_producer
将允许我将数据集缓存在内存中,但它需要将所有数据存储在一个矩阵中。由于某些示例比其他示例长得多,因此该矩阵可能不必要地大,并且可能对RAM而言太大。
我可以简单地为我的数据提供一个numpy数组列表,并使用feed_dict
以非数据流方式执行整个输入读取 - 随机化 - 预处理,但我想知道是否有办法做它没有完全放弃输入读取 - 随机化 - 预处理部分的张量流。
谢谢!
答案 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()
的详细信息。